Pagini recente » Cod sursa (job #2593497) | Cod sursa (job #586629) | Cod sursa (job #1501288) | Cod sursa (job #1640317) | Cod sursa (job #3151769)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cifra.in");
ofstream fout("cifra.out");
long long qpow(const long long a, long long b, const long long mod)
{
if(b==0)
return 1;
if(b==1)
return a%mod;
if(b%2==0)
{
long long aux=qpow(a, b/2, mod)%mod;
return (aux*aux)%mod;
}
else
{
return (a*qpow(a, b-1, mod))%mod;
}
}
const int nrLoop=20;
int ultimCf[nrLoop+1],sumLoop=0;
pair<int, int> getLastCfNdivnrLoop(string n)
{
int r=0;
for(int i=n.size()-1; i>=0; i--)
{
r=r*10+n[i]-'0';
n[i]=(r/nrLoop)%10+'0';
r%=nrLoop;
}
return make_pair(n[n.size()-1]-'0', r);
}
int getAns(const string& n)
{
int rez;
pair<int, int> aux=getLastCfNdivnrLoop(n);
rez=aux.first*sumLoop;
for(int i=1; i<=aux.second; i++)
rez+=ultimCf[i];
return rez%10;
}
int main()
{
for(int i=1; i<=nrLoop; i++)
{
ultimCf[i]=qpow(i, i, 10);
sumLoop+=ultimCf[i];
}
int T;
fin>>T;
for(int q=1; q<=T; q++)
{
string n;
fin>>n;
fout<<getAns(n)<<'\n';
}
return 0;
}