Cod sursa(job #54109)

Utilizator maria_bobesMaria Bobes maria_bobes Data 24 aprilie 2007 10:32:20
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include<stdio.h>
#include<math.h>
FILE *f=fopen("cifra.in","r"),*g=fopen("cifra.out","w");
int a,n;
char c[30000];
void citire()
{
 int i=1,p;
 fscanf(f,"%c",&c[1]);
 while(c[i]!='\n')
  {
  fscanf(f,"%c",&c[++i]);
  fflush(f);    }
 p=i-1;
 if(p>1)
 {
  c[p]=c[p]-48;
  c[p-1]=c[p-1]-48;
  a=c[p-1]*10+c[p];
 }
 else
 {
  c[p]=c[p]-48;
  a=c[p];
 }

}

void cifra()
{
 int s1=0,s=0,k,l;
 if(a>=10)
 {
  s1=a/10;
  s1=s1*7;
  if (s1>9)
   s=s1%10;
 }
 int i=a%10;
 for(int j=1;j<=i;j++)
 {
  if(j==0||j==1||j==5||j==6)
   {
    s=s+j;
   }
  else
   if(j==4||j==9)
    {
     k=s1+j;
     k=k%2;
     if(k==0)
       s=s+j*j;
     else
      s=s+j;
    }
   else
   {
    k=s1+j;
    k=k%4;
    if(k==0)   k=4;
    else
    {
     int m=1;
     for(l=1;l<=k;l++)
      {m=m*j;
       m=m%10;  }
     s=s+m;
     }
   }
   s=s%10;
 }
 fprintf(g,"%d\n",s);

}


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

 for(int i=1;i<=n;i++)
  {
   citire();
   cifra();
  }

 return 0;

}