/*
Gigel, fiind plictisit, se juca in timpul orei de matematica, desenand pe o foaie. Din pacate, profesorul l-a vazut si i-a spus ca ii pune nota 4 daca nu rezolva urmatoarea problema: pentru o valoarea N data trebuie sa determine ultima cifra a sumei 11 + 22 + ... + NN.
Cerinta
Scrieti un program care sa-l ajute pe Gigel si sa determine ultima cifra a acestei sume pentru T valori date ale lui N.
Date de intrare
Pe prima linie din fisierul cifra.in se va afla numarul T. Pe urmatoarele T linii se vor gasi valori ale lui N pentru care trebuie gasit raspunsul.
Date de iesire
Pe cele T linii ale fisierului cifra.out se vor gasi raspunsurile pentru valorile lui N date in fisierul de intrare.
Restrictii
1 = T = 30.000
ATENTIE! 1 = N < 10100. Numerele trebuie citite ca siruri de caractere!
Se acorda punctaj pentru un test doar daca toate cele T valori din fisierul de iesire sunt corecte
*/
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
int main()
{
int n,uc,pc,nc,rez[10][10];
stringstream sirc (stringstream::in | stringstream::out);
string sir;
rez[0][0]=0,rez[0][1]=1,rez[0][2]=5,rez[0][3]=2,rez[0][4]=8,rez[0][5]=3,rez[0][6]=9,rez[0][7]=2,rez[0][8]=8,rez[0][9]=7;
rez[1][0]=7,rez[1][1]=8,rez[1][2]=2,rez[1][3]=9,rez[1][4]=5,rez[1][5]=0,rez[1][6]=6,rez[1][7]=9,rez[1][8]=5,rez[1][9]=4;
rez[2][0]=4,rez[2][1]=5,rez[2][2]=9,rez[2][3]=6,rez[2][4]=2,rez[2][5]=7,rez[2][6]=3,rez[2][7]=6,rez[2][8]=2,rez[2][9]=1;
rez[3][0]=1,rez[3][1]=2,rez[3][2]=6,rez[3][3]=3,rez[3][4]=9,rez[3][5]=4,rez[3][6]=0,rez[3][7]=3,rez[3][8]=9,rez[3][9]=8;
rez[4][0]=8,rez[4][1]=9,rez[4][2]=3,rez[4][3]=0,rez[4][4]=6,rez[4][5]=1,rez[4][6]=7,rez[4][7]=0,rez[4][8]=6,rez[4][9]=5;
rez[5][0]=5,rez[5][1]=6,rez[5][2]=0,rez[5][3]=7,rez[5][4]=3,rez[5][5]=8,rez[5][6]=4,rez[5][7]=7,rez[5][8]=3,rez[5][9]=2;
rez[6][0]=2,rez[6][1]=3,rez[6][2]=7,rez[6][3]=4,rez[6][4]=0,rez[6][5]=5,rez[6][6]=1,rez[6][7]=4,rez[6][8]=0,rez[6][9]=9;
rez[7][0]=9,rez[7][1]=0,rez[7][2]=4,rez[7][3]=1,rez[7][4]=7,rez[7][5]=2,rez[7][6]=8,rez[7][7]=1,rez[7][8]=7,rez[7][9]=6;
rez[8][0]=6,rez[8][1]=7,rez[8][2]=1,rez[8][3]=8,rez[8][4]=4,rez[8][5]=9,rez[8][6]=5,rez[8][7]=8,rez[8][8]=4,rez[8][9]=3;
rez[9][0]=3,rez[9][1]=4,rez[9][2]=8,rez[9][3]=5,rez[9][4]=1,rez[9][5]=6,rez[9][6]=2,rez[9][7]=5,rez[9][8]=1,rez[9][9]=0;
ifstream f1 ("cifra.in");
ofstream f2 ("cifra.out");
if (f1.is_open())
{
while (! f1.eof())
{
f1>>n;
for (int i=0; i<n; ++i)
{
f1>>sir;
if (sir.size() >=2)
{
sirc << sir.at(sir.size()-1) << sir.at(sir.size()-2);
sirc >> nc;
uc=nc%10;
nc=nc/10;
pc=nc%10;
}
else
{
sirc << sir.at(sir.size()-1);
sirc >> nc;
uc=nc%10;
pc=0;
}
sir.clear();
sirc.clear();
f2<<rez[pc][uc]<<"\n";
}
}
}
f1.close();
f2.close();
return 0;
}