Deoarece Ionel nu a înţeles bine ordinea de efectuare a operaţiilor de ridicare la putere, doamna învăţătoare îi dă o tema care să îl ajute să aprofundeze această problemă. Astfel, îi dă mai multe exerciţii de următorul tip: pentru trei cifre nenule a
, b
, c
, el va trebui să calculeze valoarea următoarei expresii:
\( a^{b^c} + a^{c^b} + b^{a^c} + b^{c^a} + c^{a^b} + c^{b^a} \)
Cerința
Cunoscând cifrele a
, b
, c
, determinaţi valoarea obţinută în urma efectuării calculelor de mai sus.
Date de intrare
Fișierul de intrare puteri5.in
conține pe prima linie trei cifre a b c
, separate prin câte un spaţiu.
Date de ieșire
Fișierul de ieșire puteri5.out
va conține un număr natural ce reprezintă valoarea obţinută pentru expresia precizată anterior.
Restricții și precizări
1 ≤ a,b,c ≤ 5
Exemplul 1
puteri5.in
2 1 3
puteri5.out
24
Explicație
\( 2^{1^3} + 2^{3^1} + 1^{2^3} + 1^{3^2} + 3^{2^1} + 3^{1^2} = 2^1 + 2^3 + 1^8 + 1^9 + 3^2 + 3^1 = 2 + 8 + 1 + 1 + 9 + 3 = 24 \)
Exemplul 1
puteri5.in
2 3 2
puteri5.out
1698
Cum e corect?
cout < "As la info";
cout << "As la info";
cout >> "As la info";
Felicitări! Poți mai mult?
Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.
Greșit, dar nu-i bai!
Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.
Rezolvare
Iată rezolvarea de 100 de puncte pentru problema Puteri5:
#include <fstream>
using namespace std;
ifstream fin("puteri5.in");
ofstream fout("puteri5.out");
int d[100000],s[100000],nd,ns;
int x[5];
int x_la_y(int x,int y) // calculeaza x la puterea y
{ // x si y sunt cifre
int p,i;
p=1;
for(i=1;i<=y;i++)
p=p*x;
return p;
}
void putere(int x,int z) // calculeaza x la z
{ // x este cifra, z este numar natural
int i,r,j;
d[0]=1;nd=1;
if(x>1)
for(i=1;i<=z;i++)
{
r=0;
for(j=0;j<nd;j++)
{
d[j]=d[j]*x+r;
r=d[j]/10;
d[j]=d[j]%10;
}
if(r>0)
{
d[nd]=r;
nd++;
}
}
}
void suma(void)
{
int i,r;
for(i=0;i<nd;i++)
s[i]=s[i]+d[i];
if(nd>ns)ns=nd;
r=0;
for(i=0;i<ns;i++)
{
s[i]=s[i]+r;
if(s[i]>9)
{
s[i]=s[i]-10;
r=1;
}
else r=0;
}
if(r>0)
{
s[ns]=r;
ns++;
}
}
int main()
{
int a,b,c,i,u,v,z;
fin>>a>>b>>c;
x[0]=a;x[1]=b;x[2]=c;x[3]=a;x[4]=b;
ns=1;
for(i=1;i<=3;i++)
{
u=x[i];v=x[i+1];
z=x_la_y(u,v);
putere(x[i-1],z);
suma();
z=x_la_y(v,u);
putere(x[i-1],z);
suma();
}
for(i=ns-1;i>=0;i--)
fout<<s[i];
return 0;
}
Atenție
Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa .
Rezolvarea problemei #1503 Puteri5
Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #1503 Puteri5 de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.
Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!