Cod sursa(job #120797)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 6 ianuarie 2008 17:29:54
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <stdio.h>
char v[2000005];
void ultci()
{
long long i,j,b;
	for (i=1;i<=500001;i++)
		{
		b=i%10;
		switch (b)
			{
			case 1:v[i]=v[i-1]+1;break;
			case 2:
				if (i%4==0) v[i]=(v[i-1]+6)%10;
				if (i%4==1) v[i]=(v[i-1]+2)%10;
				if (i%4==2) v[i]=(v[i-1]+4)%10;
				if (i%4==3) v[i]=(v[i-1]+8)%10;break;
			case 3:
				if (i%4==0) v[i]=(v[i-1]+1)%10;
				if (i%4==1) v[i]=(v[i-1]+3)%10;
				if (i%4==2) v[i]=(v[i-1]+9)%10;
				if (i%4==3) v[i]=(v[i-1]+7)%10;break;
			case 4:
				if (i%2==0) v[i]=(v[i-1]+6)%10;
				if (i%2==1) v[i]=(v[i-1]+4)%10;break;
			case 5: v[i]=(v[i-1]+5)%10;break;
			case 6: v[i]=(v[i-1]+6)%10;break;
			case 7:
				if (i%4==0) v[i]=(v[i-1]+1)%10;
				if (i%4==1) v[i]=(v[i-1]+7)%10;
				if (i%4==2) v[i]=(v[i-1]+9)%10;
				if (i%4==3) v[i]=(v[i-1]+3)%10;break;
			case 8:
				if (i%4==0) v[i]=(v[i-1]+6)%10;
				if (i%4==1) v[i]=(v[i-1]+8)%10;
				if (i%4==2) v[i]=(v[i-1]+4)%10;
				if (i%4==3) v[i]=(v[i-1]+2)%10;break;
			case 9:
				if (i%2==0) v[i]=(v[i-1]+1)%10;
				if (i%2==1) v[i]=(v[i-1]+9)%10;break;
			}
		}
}

int main()
{ long long n,i,t;
FILE*f=fopen("cifra.in","r");
FILE*g=fopen("cifra.out","w");
fscanf(f,"%lld",&t);
ultci();
for (i=1;i<=t;i++)
	{
	fscanf(f,"%lld",&n);
	fprintf(g,"%lld",v[n]);
}
return 0;
}