Cod sursa(job #250869)

Utilizator stocarulCosmin-Mihai Tutunaru stocarul Data 31 ianuarie 2009 23:56:50
Problema Cifra Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
#define infile "cifra.in"
#define outfile "cifra.out"
#define nmax 101
#define lmax 105
char v[lmax];
char sol[nmax];
int t;

//returneaza x^x
int x_la_x(int x)
	{
	int i,s=x%10;
	for(i=2;i<=x;i++)
		s=(s*x)%10;
	return s;
	}

void fai_sol(char sol[nmax], int n)
	{
	int i;
	for(i=1;i<n;i++)
		sol[i]=(sol[i-1]+x_la_x(i))%10;
	}

int main()
{
int i;
freopen(infile,"r",stdin);
freopen(outfile,"w",stdout);

fai_sol(sol,nmax); //facem vectorul de solutii pana la 100 (e suficient 99:P)
scanf("%d\n",&t); //citim numarul de teste
while(t--) //fiecare test in parte :P
	{
	for(i=0;v[i];v[i++]=0); //golim vectorul
	fgets(v,lmax,stdin); //citim numarul
	for(i=lmax-1;!v[i]||v[i]=='\n';i--); //trebuie sa aflam ultima pozitie din vector....
	if(!i) printf("%d\n",sol[v[0]-'0']); //numarul are o singura cifra
	else printf("%d\n",sol[(v[i]-48)+(v[i-1]-48)*10]);
	}

fclose(stdin);
fclose(stdout);
return 0;
}