Cod sursa(job #1348268)

Utilizator maniurcasoftIurca Adrian maniurcasoft Data 19 februarie 2015 16:49:58
Problema Cifra Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<stdio.h>
#include<stdlib.h>
char n[102],constOne[102];
int k;
int toInt(char x) {
	switch(x) {
		case '0': return 0; break;
 		case '1': return 1; break;
		case '2': return 2; break;
		case '3': return 3; break;
		case '4': return 4; break;
		case '5': return 5; break;
		case '6': return 6; break;
		case '7': return 7; break;
		case '8': return 8; break;
		case '9': return 9; break;
		default: return -1;
	}
}
void diff() {
	int t=k-1;
	if(n[k]>'0') n[k]--;
	else { 
		n[k]='9';
		while(n[t]=='0') { n[t]='9'; t--; }
		n[t]--;
	}
}
int lastDigit() {
	int x=0;
	if(strcmp(n,constOne)==0) return 1;
	else {
		diff();
		return (lastDigit()+toInt(n[k]+1)*toInt(n[k]+1))%10;
	}
} 
int main() {
	long long T,i,ci;
	int result;
	FILE *fileRead=fopen("cifra.in","r"),fileWrite=fopen("cifra.out","w");
	fscanf(fileRead,"%d",&T);
	for(i=1;i<=T;i++) {
		fscanf(fileRead,"%s",n);
		k=strlen(n)-1;
		for(ci=0;ci<k;ci++) constOne[ci]='0';
		constOne[k]='1';
		result=lastDigit();
		fprintf(fileWrite,"%d\n",result);
	}
	fclose(fileRead);
	fclose(fileWrite);
	return 0;
}