Cod sursa(job #297160)

Utilizator QSilverGeorge Popa QSilver Data 5 aprilie 2009 11:39:03
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2 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[1]*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;   
}