Pagini recente » Cod sursa (job #2576624) | Cod sursa (job #2664274) | Cod sursa (job #1843182) | Cod sursa (job #555690) | Cod sursa (job #286171)
Cod sursa(job #286171)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define IN "cifra.in"
#define OUT "cifra.out"
#define max 128
#define mx 8
FILE *fin=fopen(IN,"r");
FILE *fout=fopen(OUT,"w");
int m[max];
int t,n,l;
char s[max];
char a[mx];
void preprocesare();
inline int calcul(int);
inline int ultcifra(int,int);
int main()
{
preprocesare();
fscanf(fin,"%d",&t);
while(t)
{
--t;
fscanf(fin,"%s",s);
l=strlen(s);
if(l==1)
{
a[0]=s[0];
a[1]=0;
n=atoi(a);
}
else
if(l==2)
{
a[0]=s[1];
a[1]=s[0];
a[2]=0;
n=atoi(a);
}
else
if(l>=3)
{
a[0]=s[l-3];
a[1]=s[l-2];
a[2]=s[l-1];
a[3]=0;
n=atoi(a);
}
fprintf(fout,"%d\n",calcul(n));
}
fclose(fin);
fclose(fout);
return 0;
}
inline int calcul(int val)
{
int r=val%100;
int c=val/100;
return (m[r]+c*m[100])%10;
}
void preprocesare()
{
int i;
for(i=1;i<=100;i++)
m[i]=(m[i-1]+ultcifra(i%10,i%4))%10;
}
inline int ultcifra(int val,int p)
{
int i,r=1;
if(p==0)
p=4;
for(i=1;i<=p;i++)
r*=val;
return r%10;
}