Pagini recente » Borderou de evaluare (job #1772495) | Borderou de evaluare (job #97746) | Borderou de evaluare (job #1877275) | Borderou de evaluare (job #1707717) | Cod sursa (job #2214655)
#include<stdio.h>
#include<string.h>
#define MOD 10
#define MAXBUF 100
FILE*fin,*fout;
int lgput(int a,int b);
int brut(int nr);
int ans[100];
int main()
{
fin=fopen("cifra.in","r");
fout=fopen("cifra.out","w");
int T;
fscanf(fin,"%d",&T);
fgetc(fin);
char num[MAXBUF+2];
for(int i=0;i<100;i++)
{
ans[i]=brut(i);
}
for(int i=1;i<=T;i++)
{
fgets(num,MAXBUF+2,fin);
int len=strlen(num)-1;
int rest;
if(len==1)
{
rest=num[len-1]-'0';
}
else
{
rest=(num[len-2]-'0')*10+num[len-1]-'0';
}
fprintf(fout,"%d\n",ans[rest]);
}
fclose(fin);
fclose(fout);
return 0;
}
int lgput(int a,int b)
{
if(b==0)
{
return 1;
}
int r=1;
while(b>1)
{
if(b%2==0)
{
a=(a*a)%MOD;
}
else
{
r=(r*a)%MOD;
a=(a*a)%MOD;
}
b/=2;
}
return (r*a)%MOD;
}
int brut(int nr)
{
int sum=0;
for(int i=1;i<=nr;i++)
{
sum+=lgput(i,i);
sum%=MOD;
}
return sum;
}