Cod sursa(job #73365)

Utilizator vlad3rsterian vladut vlad3r Data 18 iulie 2007 03:08:35
Problema Cifra Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.9 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(void)
{
	FILE *in,*out;
	
	int T,i,care,x;
	
	char N[102];//,*aux;
	int v[101];
	//aux=malloc(2*sizeof(char));
	v[0]=0;
	for(i=1;i<100;i++)
	{
		switch(i%10)
		{
		case 1:v[i]=(v[i-1]+1)%10;break;
		case 2:
			{
				if(i%4==0)
					v[i]=(v[i-1]+6)%10;
				//break;
				if(i%4==1)
					v[i]=(v[i-1]+2)%10;
				//break;
				if(i%4==2)
					v[i]=(v[i-1]+4)%10;
				//break;
				if(i%4==3)
					v[i]=(v[i-1]+8)%10;
				//break;
			}
			break;
		case 3:
			{
				if(i%4==0)
					v[i]=(v[i-1]+1)%10;
				//break;
				if(i%4==1)
					v[i]=(v[i-1]+3)%10;
				//break;
				if(i%4==2)
					v[i]=(v[i-1]+9)%10;
				//break;
				if(i%4==3)
					v[i]=(v[i-1]+7)%10;
				//break;
			}
			break;
		case 4:
				v[i]=(v[i-1]+6)%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;
				//break;
				if(i%4==1)
					v[i]=(v[i-1]+7)%10;
				//break;
				if(i%4==2)
					v[i]=(v[i-1]+9)%10;
				//break;
				if(i%4==3)
					v[i]=(v[i-1]+3)%10;
				//break;
			}
			break;
		case 8:
			{
				if(i%4==0)
					v[i]=(v[i-1]+6)%10;
				//break;
				if(i%4==1)
					v[i]=(v[i-1]+8)%10;
				//break;
				if(i%4==2)
					v[i]=(v[i-1]+4)%10;
				//break;
				if(i%4==3)
					v[i]=(v[i-1]+2)%10;
				
				//break;
			}
			break;
		case 9:
			v[i]=(v[i-1]+9)%10;break;
		default:
			v[i]=v[i-1];break;
		}
	}
	out=fopen("cifra.out","w");
	in=fopen("cifra.in","r");
	fscanf(in,"%d",&T);
	fgets(N,102,in);
	for(i=1;i<=T;i++)
	{
		fgets(N,102,in);
		x=strlen(N)-1;
		if(x>=2)
			care=(N[x-2]-'0')*10+(N[x-1]-'0');
		else
			care=N[0]-'0';
		fprintf(out,"%d\n",v[care]);
	}

	
//	fprintf(out,"\n\n");
  //	for(i=1;i<100;i++)
    //		fprintf(out,"%d ",v[i]);


	fclose(out);
	fclose(in);
	return 0;
}