👤
Niorbaana
a fost răspuns

Buna ! Imi poate spune cineva de ce nu functioneaza codul :

#include


using namespace std;

int main()

{

int a , putere=1 ;

cin>>a;

for(int i=0;i<16;i++)

putere=putere*a;

cout<< putere;

return 0;

}

cerinta => https://www.pbinfo.ro/?pagina=probleme&id=2599


Răspuns :

Tipul signed int nu poate memora numere mai mari decat cam [tex]2\times 10^9[/tex] ([tex]2^{31}[/tex]). O solutie este sa folosesti tipuri de numere intregi mai mari (long long, pana la [tex]2^{63} \approx 0.9\times 10^{19}[/tex] sau unsigned long long [tex]2^{64} \approx 1.84\times 10^{19}[/tex]).

#include <iostream>

using namespace std;

int main()

{

unsigned int a;

unsigned long long int putere=1 ;

cin>>a;

for(int i=0;i<16;i++)

putere=putere*a;

cout<< putere;

return 0;

}

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   long long a;

   cin >> a;

   a=a*a;

   a=a*a;

   a=a*a;

   a=a*a;

   cout << a;

   return 0;

}

Explicație:

e încă o variantă...

se putea de folosit un for pentru acele 4 înmulţiri a=a*a, adică

for (int i=0; i < 4; ++i )

a=a*a;