Pagini recente » Cod sursa (job #1765324) | Cod sursa (job #1363825) | Cod sursa (job #468035) | Cod sursa (job #715647) | Cod sursa (job #2768048)
// Cifra.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <fstream>
#include <cctype>
#include <cstring>
#pragma warning(disable: 4996)
#define DIM 101
#define MAXLEN 666
using namespace std;
// query(n+100) = query(100) + query(n) = query(n), so query(n)= query(n%100)
FILE* fin, * fout;
int query[DIM];
int pow(int a, int b, int mod)
{
if (b == 0)
return 1;
else {
int x = pow(a, b / 2, mod);
if (b % 2 == 0)
return (x * x) % mod;
else
return (((x * x) % mod) * a) % mod;
}
}
static inline void Precalculation()
{
query[0] = 0;
for (int i = 1; i < DIM; i++)
{
int putere = pow(i, i, 10);
query[i] = (query[i - 1] + putere) % 10;
}
}
static inline void Solve()
{
int T;
char N[MAXLEN];
fscanf(fin, "%d", &T);
for (; T; T--)
{
fscanf(fin, "%s", &N);
int cif = strlen(N) - 1;
int last2dig = N[cif] - '0';
if (cif > 1)
last2dig = (N[cif - 1] - '0') * 10 + (N[cif] - '0');
fprintf(fout, "%d\n", query[last2dig]);
}
}
int main()
{
fin = fopen("cifra.in", "r");
fout = fopen("cifra.out", "w");
Precalculation();
Solve();
fclose(fin);
fclose(fout);
return 0;
}