Pagini recente » Cod sursa (job #2626805) | Cod sursa (job #3211684) | Cod sursa (job #2582882) | Cod sursa (job #113915) | Cod sursa (job #2640736)
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");
int T, p[10], period, solve();
string s;
void precalculate_periods();
int main()
{
f >> T;
f.get();
precalculate_periods();
for(; T; T--)
{
getline(f, s);
g << solve() << '\n';
s.clear();
}
return 0;
}
int power(int i, int e)
{
if(e == 0)
return 1;
int ret = power(i, e / 2);
ret = (ret * ret) % 10;
if(e % 2)
ret = (ret * i) % 10;
return ret % 10;
}
void precalculate_periods()
{
for(int i = 1; i <= 9; i++)
p[i] = p[i - 1] + power(i, i);
}
int solve()
{
int ans = p[9], k = s.size();
if(k < 2)
return p[s[k - 1] - '0'] % 10;
for(int i = k - 2; i >= 0 && s[i]; i--)
ans = (ans * (s[i] - '0')) % 10;
return (ans + p[s[k - 1] - '0']) % 10;
}