Cod sursa(job #1229346)

Utilizator dica69Alexandru Lincan dica69 Data 16 septembrie 2014 23:32:05
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <cstdio>
#include <iostream>
#include <cstring>

using namespace std;

int a[10][10],i,j,s[101],s1,t,nr;
char n[101];

int main()
{FILE *f1 = fopen("cifra.in","r");
FILE *f2 = fopen("cifra.out","w");

a[0][0]=1;a[1][0]=0;
for (i=1;i<=9;i++)
{a[i][0]=1;j=1;a[i][j]=i;
while (i*a[i][j]%10!=a[i][1])
{a[i][++j]=i*a[i][j-1]%10;a[i][0]++;
}
}
s1=0;
for (i=1;i<=100;i++)
    {if (i%a[i%10][0]==0) s1=(s1+a[i%10][a[i%10][0]])%10; else s1=(s1+a[i%10][i%10%a[i%10][0]])%10;s[i]=s1%10;}
/*
    for (i=101;i<=200;i++)
    {if (i%a[i%10][0]==0) s1=(s1+a[i%10][a[i%10][0]])%10; else s1=(s1+a[i%10][i%10%a[i%10][0]])%10;cout<<s1<<' ';}cout<<'\n';cout<<'\n';

for (i=1;i<=100;i++) cout<<s[i]<<' ';cout<<'\n';

for (i=0;i<=9;i++){
for (j=1;j<=a[i][0];j++) cout<<a[i][j]<<' ';cout<<'\n';}
cout<<'\n';cout<<'\n';
*/

char c;
fscanf(f1,"%d%c",&t,&c);
for (i=1;i<=t;i++)
{fgets(n,101,f1);
if (strlen(n)==2) nr=n[strlen(n)-2]-'0';else
nr=(n[strlen(n)-3]-'0')*10+(n[strlen(n)-2]-'0');
if (nr==0) fprintf(f2,"%\n",s[100]);
else fprintf(f2,"%d\n",s[nr]);
}
fclose(f1);fclose(f2);
return 0;
}