Cod sursa(job #296013)

Utilizator cosgbCosmin cosgb Data 3 aprilie 2009 23:08:35
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <stdio.h>
#include <math.h>
#include <string.h>
int v[105];
int vv[105];

void imp(int x[],int imp,int c[])
{
 int d=0,k,i;
 c[0]=x[0];
 for (i=x[0];i>=1;i--)
	{
	 d=d*10+x[i];
	 c[i]=d/imp;
	 d=d%imp;
	 }
	 while ((c[c[0]]==0)&&(c[0]>=1)) c[0]--;
}

int uc (int x)
{ int m;
m=x%10;
  if (m==0) return 0;
  if (m==1) return 1;
  if (m==2) { if (x%4==1) return 2;
	      if (x%4==2) return 4;
	      if (x%4==3) return 8;
	      if (x%4==0) return 6;
	     }
  if (m==3) { if (x%4==1) return 3;
	      if (x%4==2) return 9;
	      if (x%4==3) return 7;
	      if (x%4==0) return 1;
	     }
   if (m==4) {if (x%2==1) return 4;
	      if (x%2==0) return 6;
	     }
   if (m==5) return 5;
   if (m==6) return 6;
   if (m==7) {if (x%4==1) return 7;
	      if (x%4==2) return 9;
	      if (x%4==3) return 3;
	      if (x%4==0) return 1;
	     }
   if (m==8) {if (x%4==1) return 8;
	      if (x%4==2) return 4;
	      if (x%4==3) return 2;
	      if (x%4==0) return 6;
	     }
   if (m==9) {if (x%2==1) return 9;
	      if (x%2==0) return 1;
	     }
}



int main()
{ freopen ("cifra.in","r",stdin);
  freopen ("cifra.out","w",stdout);
  int t,i,n,j,ww,w,k,r;
  char c[105];
   scanf ("%d",&t);
   gets (c);
   for (i=1;i<=t;i++)
      {ww=0;
      gets(c);
       n=strlen (c);
       v[0]=n;
       for (j=0;j<n;j++)
	 v[n-j]=c[j]-'0';
	 imp(v,20,vv);
        w=vv[vv[0]]*4;
       w=w%10;
       if (v[0]>=2)
	  ww=v[2]*10+v[1];
           else ww=v[1];
       ww=ww%20;
       for (k=1;k<=ww;k++)
       {r=uc(k);
	w=w+r;
       }
       w=w%10;
       printf ("%d\n",w);
      }

fcloseall();
return 0;
}