Pagini recente » Cod sursa (job #39243) | Cod sursa (job #621554) | Cod sursa (job #2957012) | Cod sursa (job #1670786) | Cod sursa (job #457662)
Cod sursa(job #457662)
#include <stdio.h>
#include <string.h>
#define lung 100
int n[lung+5];
int r[lung];
int pow(int,int,int);
void gen();
void citire(int*);
int mod(int*,int);
int main()
{
int t,i;
freopen("cifra.in","r",stdin);
freopen("cifra.out","w",stdout);
gen();
scanf("%d\n",&t);
for (i=0;i<t;i++)
{
citire(n);
printf("%d\n",r[mod(n,100)]);
}
return 0;
}
void citire(int *a)
{
char s[101];int i;
scanf("%s\n",s);
a[0]=strlen(s);
for (i=1;i<=a[0];i++)
a[i]=s[a[0]-i]-48;
}
void gen()
{
int i,s;
r[0]=s=0;
for (i=1;i<100;i++)
{
r[i]= (s+pow(i,i,10))%10;
s=r[i];
}
}
int pow(int x,int p,int mod)
{
int sol,i;
sol=1;
for (i=0;(1<<i)<=p;++i)
{
if ( (1<<i)&p )
sol= (sol*(unsigned long long)x)%mod;
x= (x*x)%mod;
}
return sol;
}
int mod(int *a,int b)
{
int r,i;
r=0;
for (i=a[0];i;i--)
{
r= (r*10+a[i])%b;
}
return r;
}