Pagini recente » Cod sursa (job #827963) | Cod sursa (job #2381653) | Cod sursa (job #2089097) | Cod sursa (job #2011281) | Cod sursa (job #1542276)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
int ridica(int a, int b, int n){
int result = 1;
while (b) {
if (b % 2 == 1){
result = result * a % n;
}
b /= 2;
a = a * a % n;
}
return result;
}
int calculeaza(int n) {
int suma = 0;
for(int i = 1; i <= n; i++)
suma += ridica(i, i, 10);
return suma % 10;
}
int main() {
char cache[100];
cache[0] = '0';
for(int i = 1; i < 100; i++)
cache[i] = '0' + calculeaza(i);
ifstream in("cifra.in");
ofstream out("cifra.out");
if(!in || !out)
return 1;
int t;
char n[102];
in >> t;
for(int i = 1; i <= t; i++) {
in >> n;
int pos;
if(strlen(n) > 1)
pos = (n[strlen(n) - 2] - '0') * 10 + n[strlen(n) - 1] - '0';
else
pos = n[0] - '0';
out << cache[pos] << "\n";
}
in.close();
return 0;
}