Pagini recente » Cod sursa (job #2663096) | Cod sursa (job #794886) | Cod sursa (job #100293) | Cod sursa (job #2804502) | Cod sursa (job #144016)
Cod sursa(job #144016)
# include <stdio.h>
# include <stdlib.h>
# define MAX 1000000
int T,N;
int saved[MAX];
void cifra(FILE*,int);
int ultcifra(int,int);
int main (){
FILE *in=fopen("cifra.in","r");
FILE *out=fopen("cifra.out","w");
fscanf(in,"%d",&T);
int i;
for (i=1;i<=T;i++){
fscanf(in,"%d",&N);
cifra(out,N);
}
fclose(in);
fclose(out);
return 0;
}
void cifra(FILE *out,int nr){
int cifra=0;
int i=0,j;
for (i=nr;i>=1;i--)
if(saved[i]!=0)
break;
cifra=saved[i];
for (j=i+1;j<=nr;j++){
cifra+=ultcifra(j%10,j);
cifra%=10;
//saved[j]=cifra;
}
fprintf(out,"%d\n",cifra);
saved[nr]=cifra;//am salvat ultima cifra
}
int ultcifra(int nr,int pow){
if(nr==0||nr==1||nr==5||nr==6)
return nr;
else if(nr==4)
switch(pow%2){
case 0:return 6;break;
case 1:return 4;break;
}
else if(nr==9)
switch(pow%2){
case 0:return 1;break;
case 1:return 9;break;
}
else if(nr==3)
switch(pow%4){
case 0:return 1;break;
case 1:return 3;break;
case 2:return 9;break;
case 3:return 7;break;
}
else if(nr==2)
switch(pow%4){
case 0:return 6;break;
case 1:return 2;break;
case 2:return 4;break;
case 3:return 8;break;
}
else if(nr==8)
switch(pow%4){
case 0:return 6;break;
case 1:return 8;break;
case 2:return 4;break;
case 3:return 2;break;
}
else if(nr==7)
switch(pow%4){
case 0:return 1;break;
case 1:return 7;break;
case 2:return 9;break;
case 3:return 3;break;
}
return 0;
}