Cod sursa(job #527898)
#include <fstream>
#include <string>
#define maxn 1000050
#define ll long long
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
char aux[maxn];
ll D,rest;
int i,N;
short v[maxn],d[maxn];
void transf()
{
v[0]=strlen(aux);
for(i=1;i<=v[0];i++)
v[i]=aux[i-1]-'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;
}
}
ll mod()
{
ll 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--)
fout << v[i];
}
int main()
{
fin >> aux;
fin >> D;
transf();
rest=mod();
D=(D-rest)%D;
transf2();
adun();
afisare();
}