Cod sursa(job #68291)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 27 iunie 2007 14:37:42
Problema Next Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<stdio.h>
#include<string.h>
FILE*f=fopen("next.in","r");
FILE*g=fopen("next.out","w");
long long d,r;
short int b[1000001];
int a[1000001];
void read()
        {
 	char x[1000001];
        fscanf(f,"%s\n",x);
        fscanf(f,"%lld",&d);
        long long i;
        a[0]=strlen(x);
        for(i=0;i<a[0];++i)
                {
                a[a[0]-i]=x[i]-'0';
                }
       }
long mod(int A[], long long B)
 {
 long long i, t = 0;
 for (i = A[0]; i > 0; i--)
        t = (t * 10 + A[i]) % B;
 return t;
  }/*
void add()
        {
        long long i,t=0,c;
        i=1;
        while(i<=a[0]||d!=0)
                {
                c=a[i];
                if(i>a[0])a[0]++;
                a[i]=(a[i]+t+d%10)%10;
                t=(c+d%10+t)/10;
                d=d/10;
                i++;
                }
       if(t>0) a[++a[0]]=t;
       }*/

void add(int A[],short int B[])
{
  long long i, t = 0;
  for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
     A[i] = (t += A[i] + B[i]) % 10;
  
}


void transform()
{
  b[0]=0;
  while (d)
    {
      b[0]++ ;
      b[b[0]]=d%10;
      d/=10;
    }
}

int main()
	{
	read();
	long long i;
	r=mod(a,d);
	d=(d-r)%d;
        add(a,b);
        for(i=a[0];i>=1;--i) fprintf(g,"%d",a[i]);
        return 0;
        }