Cod sursa(job #527907)
#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,nrd;
short v[maxn],d[maxn];
void transf()
{
N=strlen(aux);
for(i=1;i<=N;i++)
v[i]=aux[i-1]-'0';
}
void transf2()
{
int aux;
for(i=1;D;D/=10,i++)
d[i]=D%10;
nrd=i-1;
for(i=1;i<=N/2;i++)
{
aux=v[i];
v[i]=v[N-i+1];
v[N-i+1]=aux;
}
}
ll mod()
{
ll r=0;
for(i=1;i<=N;i++)
r=(10*r+v[i])%D;
return r;
}
void adun()
{
int nr,r=0;
if(N>nrd) nr=N;
else nr=nrd;
for(i=1;i<=nr;i++)
{
v[i]=(r+=v[i]+d[i])%10;
r/=10;
}
N=nr;
while(r>10)
{
v[++N]=r%10;
r/=10;
}
}
void afisare()
{
for(i=N;i;i--)
fout << v[i];
}
int main()
{
fin >> aux;
fin >> D;
transf();
rest=mod();
D=(D-rest)%D;
transf2();
adun();
afisare();
}