Cod sursa(job #471609)

Utilizator titusuTitus C titusu Data 19 iulie 2010 19:37:38
Problema Next Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <cstring>
using namespace std;
char v[1000005];
int a[1000005],n;

int main(){
  long long D;
  freopen("next.in","r",stdin);
  freopen("next.out","w",stdout);
  fgets(v,sizeof(v),stdin);
  if(v[strlen(v)-1]=='\n')
    v[strlen(v)-1] = 0;
  scanf("%lld",&D);
  
  n = 0;
  for(int i=strlen(v)-1;i>=0;--i)
    a[++n]=v[i]-'0';
  a[0]=n;
  
  long long t=0;
  for(int i=a[0];i;--i)
    t = (10*t+a[i])%D;
  if(t==0)
    D = 0;
  else
    D -= t;
  t= 0 ;
  int i = 0;
  while (D){
    if(i+1>a[0])
      a[0]++;
    i++;
    int tmp = a[i]+D%10+t;
    a[i] = tmp % 10;
    t = tmp / 10;
    D/=10;
  }
  
  while(t){
    if(i+1>a[0])
      a[0]++;
    a[++i] += t%10, t/=10;
  }
  for(int i=a[0];i;--i)
    printf("%d",a[i]);
  //printf("\n");
  return 0;
}