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:
#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:
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;
}