Pagini recente » Istoria paginii utilizator/robertforyou | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #3359483) | Cod sursa (job #3360096)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("cifra.in");
ofstream fout("cifra.out");
int A[101];
void citire(int A[])
{
char s[101];
fin >> s;
A[0] = strlen(s);
for(int i = 1; i <= A[0]; i++)
A[i] = s[A[0] - i] - '0';
}
int impartire(int A[], int B)
{
int T = 0;
for(int i = A[0]; i >= 1; i--)
{
T = T * 10 + A[i];
A[i] = T / B;
T %= B;
}
while(A[0] > 1 && A[A[0]] == 0)
A[0]--;
return T;
}
int ultimaCifraPutere(int x, int p)
{
int rezultat = 1;
x %= 10;
for(int i = 1; i <= p; i++)
rezultat = rezultat * x % 10;
return rezultat;
}
int main()
{
int t;
fin >> t;
while(t--)
{
citire(A);
int rest = impartire(A, 20);
if(rest == 0)
{
rest = 20;
int i;
for(i = 1; A[i] == 0; i++)
A[i] = 9;
A[i]--;
while(A[0] > 1 && A[A[0]] == 0)
A[0]--;
}
int su = 0;
for(int i = 1; i <= rest; i++)
su = (su + ultimaCifraPutere(i, i)) % 10;
fout << (A[1] * 4 + su) % 10 << '\n'; /// 4 - ultima cifra a unei secventa de 20 1^1+2^2+...+20^20
}
return 0;
}