Pagini recente » Cod sursa (job #784838) | Cod sursa (job #1290353) | Istoria paginii runda/infogang/clasament | Istoria paginii runda/nimic_suspect/clasament | Cod sursa (job #830869)
Cod sursa(job #830869)
/*
http://infoarena.ro/problema/cifra
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int t, n; /// how many cases, current case
int digit[100];
int raise(int n)
{
int i, j; /// iterators
int sum = 1;
for(j = 1; j <= n; ++j)
{
sum = (sum * n) % 10;
}
return sum;
}
void preprocess()
{
int i, j; /// iterators
for (i = 0; i < 100; ++i)
{
digit[i] = raise(i) % 10;
}
digit[0] = 0;
}
int getDigits(string s)
{
int x;
if(s.size() == 1)
x = s[0] - '0';
else if (s.size() == 2)
x = (s[0] - '0') * 10 + s[1] - '0';
else if (s.size() > 2)
x = (s[s.size() - 2] - '0') * 10 + (s[s.size() - 1] - '0');
return x;
}
int main()
{
int i, j; /// iterators
int sum = 0;
string input;
ifstream cin ("cifra.in");
ofstream cout ("cifra.out");
preprocess();
cin >> t;
for (i = 0; i < t; ++i)
{
cin >> input;
sum = 0;
n = getDigits(input);
for (j = 0; j <= n; ++j)
{
sum = (sum + digit[j]) % 10;
}
cout << sum << endl;
}
return 0;
}