Pagini recente » Diferente pentru numerele-sprague-grundy intre reviziile 38 si 20 | Cod sursa (job #1963432) | Cod sursa (job #1105931) | Diferente pentru home intre reviziile 902 si 264 | Cod sursa (job #3041666)
#include <fstream>
#include <string>
using namespace std;
string s;
const int PRECALC = 100;
int ultimaCifra[1 + PRECALC];
void preCalc()
{
for (int i = 1; i <= PRECALC; i++)
{
int sol = 1;
int j = i;
while (j--)
{
sol *= i;
sol %= 10;
}
ultimaCifra[i] = (ultimaCifra[i - 1] + sol) % 10;
}
}
int main()
{
ifstream in("cifra.in");
ofstream out("cifra.out");
ios_base::sync_with_stdio(false);
in.tie(nullptr);
preCalc();
int t;
in >> t;
while (t--)
{
in >> s;
if (s.size() == 1)
{
out << ultimaCifra[s[0] - '0'] << '\n';
}
else
{
out << ultimaCifra[10 * (s[s.size() - 2] - '0') + (s[s.size() - 1] - '0')] << '\n';
}
}
/*
for (int i = 0; i <= PRECALC; i++)
{
out << ultimaCifra[i] << ' ';
if (i % 100 == 0)
out << '\n';
if (ultimaCifra[i] == 0)
out << '\n' << "Poz " << i << '\n';
}
out << '\n';
*/
in.close();
out.close();
return 0;
}