Cod sursa(job #74911)

Utilizator alex23alexandru andronache alex23 Data 29 iulie 2007 16:43:20
Problema Cifra Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int main()
{FILE *fin,*fout;
int v[20],b[20][10],t,i,j,s,k,q,x;
char nr[200],nr2[10];



v[0]=0;
v[1]=1;
v[2]=4;
v[3]=4;
v[4]=2;
v[5]=1;
v[6]=1;
v[7]=4;
v[8]=4;
v[9]=2;

b[0][0]=0;
b[1][0]=1;
b[2][0]=6;
b[2][1]=2;
b[2][2]=4;
b[2][3]=8;
b[3][0]=1;
b[3][1]=3;
b[3][2]=9;
b[3][3]=7;
b[4][0]=6;
b[4][1]=4;
b[5][0]=5;
b[6][0]=6;
b[7][0]=1;
b[7][1]=7;
b[7][2]=9;
b[7][3]=3;
b[8][0]=6;
b[8][1]=8;
b[8][2]=4;
b[8][3]=2;
b[9][0]=1;
b[9][1]=9;


fin=fopen("cifra.in","r");
fout=fopen("cifra.out","w");
fscanf(fin,"%d",&t);
for (i=1;i<=t;i++)
 {fscanf(fin,"%s",&nr); 
  x=strlen(nr);
  while (!isdigit(nr[x]))
  if (!isdigit(nr[x])) x--;
  x++;
  /*if (x>3) {nr2[0]=nr[x-4];
	    nr2[1]=nr[x-3];
	    nr2[2]=nr[x-2];
	    nr2[3]=nr[x-1];
	    }
     else */
      if (x>2) {nr2[0]=nr[x-3];
		nr2[1]=nr[x-2];
		nr2[2]=nr[x-1];
		}
	  else
	    if (x>1) {nr2[0]=nr[x-2];
		      nr2[1]=nr[x-1];
		      }
		  else nr2[0]=nr[x-1];

  k=atoi(nr2);
  s=8*(k/40);
  if (s>9) s=s%10;
  k=k%40;

  for (j=1;j<=k;j++)
   {if (j>9) q=j%10;
	else q=j;
    if (q!=0) s=s+b[q][j%v[q]];
    if (s>9) s=s%10;
    }
  fprintf(fout,"%d",s);
  fprintf(fout,"\n");
  nr2[0]=' ';
  nr2[1]=' ';
  nr2[2]=' ';
  }

fclose(fin);
fclose(fout);

return 0;
}