Cod sursa(job #40974)

Utilizator lostBlanaru Adina lost Data 27 martie 2007 21:21:52
Problema Cifra Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<stdio.h>
#include<mem.h>
#include<string.h>
#define Nmax 50
int p,t,n;
int ultima_cf(int t)
{
int i,cf=1;
for (i=1;i<=t;i++)
       {
       cf=cf*t;
       cf=cf%10;
       if(cf==0)return 0;
       }
return cf;
}
int a[Nmax];
int r[Nmax];
void Aduna(int *a,int &na,int n)
{
int i;
a[0]=1+a[0];
i=0;
while ((a[i]>9)&&(i<n))
      {
      a[i]=a[i]%10;
      a[i+1]=a[i+1]+1;
      i++;
      }
na=i--;
}

int Compara(int *a,int na,int *r,int n)
{
 int i;
 if (na>n) return 1;
   else if (n>na) return -1;
 i=na-1;
 while ((a[i]==r[i])&&(i>=0))
  i--;
 if (i==-1) return 0;
 if (a[i]>r[i]) return 1;
   else return -1;
}

int main()
{
int x[10];
x[1]=1,x[2]=4,x[3]=7,x[4]=6,x[5]=5,x[6]=6,x[7]=7,x[8]=6,x[9]=9,x[0]=0;

char nr[Nmax];
int i,p,j,s=0,na=0;
freopen("cifra.in","r",stdin);
freopen("cifra.out","w",stdout);
scanf("%d",&p);
for(i=1;i<=p;i++)
	  {
	  s=0;
	  memset(a,0,sizeof(int)*na);
	  memset(r,0,sizeof(int)*n);
	  scanf("%s",nr);
	  n=strlen(nr);
	  for(j=0;j<n;j++)
		     r[j]=nr[j]-'0';
	  na=0;
	  a[0]=0;
	  while (Compara(a,na,r,(n-1))<=0)
		   {
		   s=s+(a[na-1]-'0');
		   s=s%10;
		   Aduna(a,na,(n-1));
		   }
	  printf("%d\n",s);
	  }
return 0;
}