#include<stdio.h>
#include<string.h>
FILE *in, *out;
in=fopen("cifra.in", "r");
out=fopen("cifra.out", "w");
int citire (char *sir)
{
int i, len;
fgets( sir,101,in );
len=strlen(sir)-1;
sir[len]=NULL;
strrev(sir);
for (i=0; i<len; i++)
sir[i]-='0';
return len-1; //pozitia ultimei cifre si nu lungimea numarului
}
void decrement (char *sir, int *len)
{
int i=0;
sir[i]--;
while (sir[i]==-1)
{
sir[i]=9;
i++;
sir[i]--;
}
if ( i==(*len) && sir[i]==0 )
(*len)--;
}
int construct4 (char *sir) //ultimele 2 cifre pentru verificare restului la 4
{
return (sir[0]+sir[1]*10);
}
int main()
{
char n[102];
int valori[10][4]={{0},{0},{6,2,4,8},{1,3,9,7},{6,4,6,4},{0},{0},{1,7,9,3},{6,8,4,2},{1,9,1,9}};
int ocifra[10]={0, 1, 4, 7, 6, 5, 6, 3, 6, 9}; //cifrele de la 1 la 9
int i, L, ucif, putere, scif=0, nr, T, contor;
fscanf(in, "%d", &T);
for (contor=1; contor<=T; contor++)
{
scif=0;
L=citire(n);
while (L>1) //cat timp numarul are minim 2 cifre, ca sa mearga cu construct4
{
ucif=n[0];
if (ucif==0 || ucif==1 || ucif==5 || ucif==6)
scif+=ucif;
else
{
putere=construct4(n)%4;
scif+=valori[ucif][putere];
}
scif=scif%10;
decrement(n,&L);
}
nr=n[0];
for (i=1; i<=nr; i++)
scif+=ocifra[i];
scif=scif%10;
fprintf(out, "%d", scif);
}
return 0;
}