Cod sursa(job #83173)

Utilizator pitbullpitbulll pitbull Data 10 septembrie 2007 11:58:31
Problema Cifra Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.35 kb
# include <stdio.h>
# include <stdlib.h>
int T,N;

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;
	for (i=1;i<=nr;i++){
		cifra+=ultcifra(i%10,i);
		cifra%=10;	
	}
	fprintf(out,"%d\n",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;			
}