Cod sursa(job #114595)

Utilizator razvanelu99Razvan Andrus razvanelu99 Data 14 decembrie 2007 23:52:55
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include<stdio.h>
int intreg(char a)
{
switch (a)
      {
      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;
      }
return 0;
}
char caracter(int a)
{
switch (a)
      {
      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 -1:return '-1';break;
      }
return 0;

}
int main()
{
FILE *fin,*fout;
fin= fopen ("cifra.in","r");
fout= fopen ("cifra.out","w");
char *a;
int t,v[100],i;
for (i=0;i<=99;i++) v[i]=-1;
fscanf(fin,"%d",&t);
int s,n;
int m,p,r;
for (i=1;i<=t;i++)
   {
   fscanf (fin,"%s",a);
   s=0;
   for (int j=1;;j++) if (a[j]=='\0')
			{
			n=j-1;
			break;
			}
   if (n==0) r=intreg(a[n]);
   else r=intreg(a[n-1])*10+intreg(a[n]);
   if (v[r]>=0)  fprintf (fout,"%d\n",v[r]);
   else
      {
      for (j=1;j<=r;j++)
	 {
	 p=1;
	 for (m=1;m<=j;m++) p=(p*j)%10;
	 s=(s+p)%10;
	 }
      v[r]=s;
      fprintf (fout,"%d\n",s);
      }
   }


return 0;
}