Cod sursa(job #38935)

Utilizator crawlerPuni Andrei Paul crawler Data 26 martie 2007 11:47:05
Problema Next Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <stdio.h>
#include <string.h>

#define BASE  10

void add(int A[], int B)
 {  
     int i, t = 0;  

     A[1] += B;

     for (i = 1; i <= A[0] || t; ++i, t /= 10)
        if(A[i] > BASE)
         {
          A[i+1] += A[i] / BASE;
          A[i] %= BASE;
         }
          else
         break;

     if(A[0] < i - 1)
     A[0] = i - 1;         
 }

int mod(int A[], int B)
 {
  int i, t = 0;
  for (i = A[0]; i > 0; --i)
         t = (t * BASE + A[i]) % B;
  return t;
 }


int a[1000002];
char buf[1000002];

int main()
 {
  freopen("next.in","r",stdin);
  freopen("next.out","w",stdout);

  fgets(buf,1000000,stdin);

  int D,i;

  scanf("%d", &D);

  buf[strlen(buf)-1] = 0;

  for(i=strlen(buf)-1;i>=0;--i)
   a[++a[0]] = buf[i]  - 48;

  D -= mod(a,D);

  add(a,D);

  printf("%d", a[a[0]]);

  for(i=a[0]-1;i>0;--i)
   printf("%d", a[i]);


  return 0;
 }