Pagini recente » Cod sursa (job #1641008) | Cod sursa (job #1638244) | Cod sursa (job #2632653) | Cod sursa (job #88837) | Cod sursa (job #2326980)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("cifra.in");
ofstream cout("cifra.out");
int pw(int b, int e) {
int ans(1);
if (e == 0)
e = 4;
while (e) {
ans = ans * b % 10;
e--;
}
return ans;
}
int main()
{
int q;
string n;
cin >> q;
while (q--) {
cin >> n;
int ans(0), a, b;
reverse(n.begin(), n.end());
if (n.size() >= 2) {
for (int j = 1; j <= n[0] - '0'; ++j) {///analizam ultima grupa
ans += pw(j % 10, j % 4 + (n[1] - '0') % 2 * 2);
if (ans >= 10)
ans -= 10;
}
if ((n[1] - '0')&1) {
bool t(0);
for (int i = n.size() - 1; i > 0; --i) {
n[i] -= '0';
if (t)
n[i] += 5;
t = 0;
if (n[i]&1)
t = 1;
n[i] /= 2;
}
a = n[1];
b = n[1] + 1;
}
else {
bool t(0);
for (int i = n.size() - 1; i > 0; --i) {
n[i] -= '0';
if (t)
n[i] += 5;
t = 0;
if (n[i]&1)
t = 1;
n[i] /= 2;
}
a = n[1];
b = n[1];
}
}
else {
a = b = 0;
for (int j = 1; j <= n[0] - '0'; ++j) {///analizam ultima grupa
ans += pw(j % 10, j % 4);
if (ans >= 10)
ans -= 10;
}
}
for (int j = 1; j < 10; ++j) {
ans += b * pw(j, j % 4);
if (ans >= 10)
ans -= 10;
ans += a * pw(j, 2 + j % 4);
if (ans >= 10)
ans -= 10;
}
cout << ans << '\n';
}
return 0;
}