Cod sursa(job #57442)
#include<stdio.h>
FILE *f=fopen("cifra.in","r"),*g=fopen("cifra.out","w");
char c[30000];
void citire(int &a)
{
int i=1,p;
c[0]='0';
fscanf(f,"%c",&c[1]);
while(c[i]!='\n')
{
fscanf(f,"%c",&c[++i]);
fflush(f); }
p=i-1;
c[p]=c[p]-48;
c[p-1]=c[p-1]-48;
a=c[p-1]*10+c[p];
}
void cifra(int a)
{
int s1=0,s=0,k,l;
if(a>=10)
{
s1=a/10;
s1=s1*7;
if (s1>9)
s=s1%10;
}
int i=a%10;
for(int j=1;j<=i;j++)
{
if(j==0||j==1||j==5||j==6)
{
s=s+j;
}
else
if(j==4||j==9)
{
k=s1+j;
k=k%2;
if(k==0)
s=s+j*j;
else
s=s+j;
}
else
{
k=s1+j;
k=k%4;
if(k==0) k=4;
else
{
int m=1;
for(l=1;l<=k;l++)
{m=m*j;
m=m%10; }
s=s+m;
}
}
s=s%10;
}
fprintf(g,"%d\n",s);
}
int main()
{
int n,a=0;
fscanf(f,"%d",&n);
fscanf(f,"\n");
for(int i=1;i<=n;i++)
{
citire(a);
cifra(a);
}
return 0;
}