Cod sursa(job #527866)
#include <stdio.h>
#include <string>
#define maxn 1000050
#define ll long long
char aux[maxn];
ll D,rest;
int i,N,v[maxn],d[maxn];
void transf()
{
v[0]=strlen(aux)-1;
for(i=1;i<=v[0];i++)
v[i]=aux[i]-'0';
}
void transf2()
{
int aux;
for(i=1;D;D/=10,i++)
d[i]=D%10;
d[0]=i-1;
for(i=1;i<=v[0]/2;i++)
{
aux=v[i];
v[i]=v[v[0]-i+1];
v[v[0]-i+1]=aux;
}
}
int mod()
{
int r=0;
for(i=1;i<=v[0];i++)
r=(10*r+v[i])%D;
return r;
}
void adun()
{
int nr,r=0;
if(v[0]>d[0]) nr=v[0];
else nr=d[0];
for(i=1;i<=nr;i++)
{
v[i]=(r+=v[i]+d[i])%10;
r/=10;
}
while(r>10)
{
v[++v[0]]=r%10;
r/=10;
}
}
void afisare()
{
for(i=v[0];i;i--)
printf("%d",v[i]);
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
scanf("%s\n",aux+1); aux[0]=' ';
scanf("%lld",&D);
transf();
rest=mod();
D=(D-rest)%D;
transf2();
adun();
afisare();
}