Pagini recente » Cod sursa (job #675914) | Cod sursa (job #2687043) | Cod sursa (job #2028468) | Cod sursa (job #1316466) | Cod sursa (job #1443399)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("cifra.in");
ofstream g("cifra.out");
char sir[500];
int a[500] , b[500] , mat[10][5] , n;
int rest(){
int i , t = 0;
for (i = a[0]; i > 0; i--)
t = (t * 10 + a[i]) % 20;
return t;
}
void impart(){
int i ,t = 0;
for (i = a[0]; i > 0; i--, t %= 20)
a[i] = (t = t * 10 + a[i]) / 20;
for (; a[0] > 1 && !a[a[0]]; a[0]--);
}
void inmult(){
int i , t = 0 ;
for (i = 1; i <= a[0] || t; i++, t /= 10)
a[i] = (t += a[i] * 94) % 10;
a[0] = i - 1;
}
void adun()
{
int i, t = 0;
for (i=1; i<=a[0] || i<=b[0] || t; i++, t/=10)
a[i] = (t += a[i] + b[i]) % 10;
a[0] = i - 1;
}
void solve(){
int r , i , sum = 0;
r = rest();
for( i = 1 ; i <= r ; ++i){
sum += mat[i % 10][i % 4];
}
impart();
inmult();
g<<(a[1] + sum) % 10 << '\n';
}
int main()
{
int j;
f >> n;
mat[1][0]=1,mat[1][1]=1,mat[1][2]=1,mat[1][3]=1;
mat[2][0]=6,mat[2][1]=2,mat[2][2]=4,mat[2][3]=8;
mat[3][0]=1,mat[3][1]=3,mat[3][2]=9,mat[3][3]=7;
mat[4][0]=6,mat[4][1]=4,mat[4][2]=6,mat[4][3]=4;
mat[5][0]=5,mat[5][1]=5,mat[5][2]=5,mat[5][3]=5;
mat[6][0]=6,mat[6][1]=6,mat[6][2]=6,mat[6][3]=6;
mat[7][0]=1,mat[7][1]=7,mat[7][2]=9,mat[7][3]=3;
mat[8][0]=6,mat[8][1]=8,mat[8][2]=4,mat[8][3]=2;
mat[9][0]=1,mat[9][1]=9,mat[9][2]=1,mat[9][3]=9;
f.get();
for(int i = 1; i <= n ; ++i){
f.getline(sir,500);
a[0]=strlen(sir);
for(j = a[0] - 1; j >= 0 ; --j)
{
a[a[0] - j] = sir[j] - '0';
}
solve();
}
return 0;
}