Informatică, întrebare adresată de togoeradu, 8 ani în urmă

Problema #943 de pe pb info

Cerința

Se dă n un număr natural nenul. Să se afle ultima cifră a sumei: S=14 + 24 + 34 + ... + n4.


Date de intrare

Programul citește de la tastatură numărul n.


Date de ieșire

Programul va afișa pe ecran ultima cifră a numărului S.


Restricții și precizări

1 ≤ n ≤ 1.000.000.000


Exemplu

Intrare


4

Ieșire


4

Explicație

S=1+16+81+256=354, deci ultima cifră este 4.


Mie imi iese programul, dar imi da doar 40 de puncte. Programul meu este urmatorul:

#include iostream

#include math.h

using namespace std;


int main()

{

long long int n,i,S;

cin>>n;

S=0;


for(i=1;i<=n;i++)

{

S=S+pow(i,4);

}

cout<< S;
}

Răspunsuri la întrebare

Răspuns de boiustef
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

   int n, S=0;

   cin >> n;

   int uc;

   n=n%100;

   for (int i=1; i<=n; ++i)

       {

           uc = i % 10;

           if (uc==5) S+=5;

           else if (uc && (uc%2))  S+=1;

                else if (uc && (uc%2==0))  S+=6;

        }

       S%=10;

   cout << S << endl;

   return 0;

}

Explicație:


togoeradu: Ce testează condiția (uc&&(uc%2))?
boiustef: cât uc nu e 0 şi uc este pară
boiustef: uc este ultima cifră. ne interesează ultima cifră şi nu memorăm valorile puterilor....
boiustef: uc%2, testează imparitatea, iar uc%2=0, testeayă paritatea cifrei
boiustef: Şi un sfat... nu mai folosi pow la puterile numerelor naturale... pt. n mare dau eroare. Funcţia pow(a,e) a fost "inventată" pentru a afla valoarea puterilor cu exponent fracţionar....
Răspuns de wawawa15
0

Răspuns:

Cu case

#include <iostream>

using namespace std;

int n;

int main()

{

   cin >> n;

   int c=n/10;

   int r=n%10;

   switch(r)

   {

       case 0 : cout << ((c*3)%10)%10; break;

       case 1 : cout << ((c*3)%10+1)%10; break;

       case 2 : cout << ((c*3)%10+7)%10; break;

       case 3 : cout << ((c*3)%10+8)%10; break;

       case 4 : cout << ((c*3)%10+14)%10; break;

       case 5 : cout << ((c*3)%10+19)%10; break;

       case 6 : cout << ((c*3)%10+25)%10; break;

       case 7 : cout << ((c*3)%10+26)%10; break;

       case 8 : cout << ((c*3)%10+32)%10; break;

       case 9 : cout << ((c*3)%10+33)%10; break;

   }

   return 0;

}

Alte întrebări interesante