Cod sursa(job #122854)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 13 ianuarie 2008 19:40:48
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <stdio.h>
long v[105]={0};
void ultci()
{
int i,j,b;
	for (i=1;i<=100;i++)
		{
		b=i%10;
		switch (b)
			{
			case 0:v[i]=v[i-1];break;
			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 n,i,t,j,u,p;
FILE*f=fopen("cifra.in","r");
FILE*g=fopen("cifra.out","w");
ultci();
fscanf(f,"%ld",&t);
for (i=1;i<=t;i++)
	{
	fscanf(f,"%ld",&n);
	u=n%10;
	p=n%100/10;
	fprintf(g,"%ld\n",v[p*10+u]);
}
return 0;
}