Cod sursa(job #66569)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 19 iunie 2007 19:37:51
Problema Next Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<stdio.h>
#include<string.h>

long long d, r, aux;
int a[1000010], b[170];
void citire()
{
  char s[1000010];
  freopen("next.in","r",stdin);
  scanf("%s",&s);
  long long l;
  l=strlen(s);
  for (long long i=l-1; i>=0; i--)
    a[l-i]=s[i]-'0';
  a[0]=l;
  scanf("%lld",&d);
}


long 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(int A[], 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;  
  A[0] = i - 1;  
}   


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

void afis()
{
  freopen("next.out","w",stdout);
  for (long long i=a[0]; i>=1; i--)
     printf("%d",a[i]);
}

int main()
{
  citire();
  r=mod(a,d);
  aux=(d-r)%d;
  transform();
  add(a,b);
  afis();
  return 0;
}