Pagini recente » bidonel | Cod sursa (job #2650976) | Cod sursa (job #2373448) | Cod sursa (job #712693) | Cod sursa (job #2214649)
#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 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=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",brut(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;
}