Cod sursa(job #82669)

Utilizator coderninuHasna Robert coderninu Data 8 septembrie 2007 03:14:00
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <stdio.h>
#define infile "cifra.in"
#define outfile "cifra.out"
#define nmax 101

short n[nmax], i[nmax], u[10]={0, 1, 4, 7, 6, 5, 6, 3, 6, 9}, rez;
int t;

void read_next();
void add();
int egal();
void init();

int main()
{
 freopen(infile, "r", stdin);
 freopen(outfile, "w", stdout);
 scanf("%d\n", &t);
 for (int ii=1; ii<=t; ii++)
     {
      read_next();
      init();
      do
	  {
	   add();
	   rez=(rez+u[i[1]])%10;
	  }
      while (!egal());
      printf("%d\n", rez);
     }
 fclose(stdin);
 fclose(stdout);
 return 0;
}

void read_next()
{
 char c;
 int temp;
 n[0]=0;
 scanf("%c", &c);
 while (c!='\n')
     {
      n[++n[0]]=c-'0';
      scanf("%c", &c);
     }
 for (int j=1; j<=n[0]/2; j++)
     {
      temp=n[j];
      n[j]=n[n[0]-j+1];
      n[n[0]-j+1]=temp;
     }
}

void add()
{
 for (int ij=1; ij<=i[0]; ij++)
     if (i[ij]==9)
	 {
	  i[ij]=0;
	  if (ij==i[0]) i[0]++;
         }
     else
	 {
	  i[ij]++;
	  break;
	 }
}

int egal()
{
 if (i[0]!=n[0]) return 0;
 for (int k=1; k<=n[0]; k++)
     if (i[k]!=n[k]) return 0;
 return 1;
}

void init()
{
 for (int k=1; k<=i[0]; k++)
     i[k]=0;
 i[0]=1;
 rez=0;
}