Cod sursa(job #108207)

Utilizator me_andyAvramescu Andrei me_andy Data 21 noiembrie 2007 21:31:21
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.45 kb
#include<stdio.h>
#include<string.h>
#define max 10000

  FILE *f=fopen("cifra.in","r");
  FILE *g=fopen("cifra.out","w");
  char a[112];
  int i,j,s,t,x,y,xs,m;

int recunoastere(int x)
{
 if(x=='0')
  return 0;
 if(x=='1')
  return 1;
 if(x=='2')
  return 2;
 if(x=='3')
  return 3;
 if(x=='4')
  return 4;
 if(x=='5')
  return 5;
 if(x=='6')
  return 6;
  if(x=='7')
  return 7;
 if(x=='8')
  return 8;
 if(x=='9')
  return 9;
}

int main()
{
 fscanf(f,"%d",&t);


    fgets(a,110,f);
    for(i=1;i<=t;i++)
 {

   fgets(a,110,f);
  if(i<t)
  if(strlen(a)>=4)
  {
   x=recunoastere(a[strlen(a)-2]);
   y=recunoastere(a[strlen(a)-3]);
   xs=10*y+x;
  }
  else
  {
   x=recunoastere(a[strlen(a)-2]);
   xs=x;
  }
   if(i==t)
   if(strlen(a)>=4 )
  {
   x=recunoastere(a[strlen(a)-1]);
   y=recunoastere(a[strlen(a)-2]);
   xs=10*y+x;
  }
  else
  {
   x=recunoastere(a[strlen(a)-1]);
   xs=x;
  }

  s=0;
  for(j=1;j<=xs;j++)
  {
   x=j%10;
   y=j;
  if(x==0)
  {
   s=s+0;
   s=s%10;
  }
  if(x==1)
  {
   s=s+1;
   s=s%10;
  }


  if(x==2)
  {
   m=y%4;
   if(m==0)
   {
    s=s+6;
    s=s%10;
   }
   if(m==1)
   {
    s=s+2;
    s=s%10;
   }
   if(m==2)
   {
    s=s+4;
    s=s%10;
   }
   if(m==3)
   {
    s=s+8;
    s=s%10;
   }
  }


  if(x==3)
  {
   m=y%4;
   if(m==0)
   {
    s=s+1;
    s=s%10;
   }
   if(m==1)
   {
    s=s+3;
    s=s%10;
   }
   if(m==2)
   {
    s=s+9;
    s=s%10;
   }
   if(m==3)
   {
    s=s+7;
    s=s%10;
   }
  }



  if(x==4)
  {
   m=y%2;
   if(m==0)
   {
    s=s+6;
    s=s%10;
   }
   if(m==1)
   {
    s=s+4;
    s=s%10;
   }
  }


  if(x==5)
  {
   s=s+5;
   s=s%10;
  }

  if(x==6)
  {
   s=s+6;
   s=s%10;
  }

  if(x==7)
  {
    m=y%4;
   if(m==0)
   {
    s=s+1;
    s=s%10;
   }
   if(m==1)
   {
    s=s+7;
    s=s%10;
   }
   if(m==2)
   {
    s=s+9;
    s=s%10;
   }
   if(m==3)
   {
    s=s+3;
    s=s%10;
   }
  }



    if(x==8)
  {
    m=y%4;
   if(m==0)
   {
    s=s+6;
    s=s%10;
   }
   if(m==1)
   {
    s=s+8;
    s=s%10;
   }
   if(m==2)
   {
    s=s+4;
    s=s%10;
   }
   if(m==3)
   {
    s=s+2;
    s=s%10;
   }
  }
   if(x==9)
   {
    m=y%2;
    if(m==0)
    {
     s+=1;
     s=s%10;
    }
    if(m==1)
    {
     s+=9;
     s=s%10;
    }
   }
  }
  fprintf(g,"%d\n",s);
 }

 fcloseall();

 return 0;
}