Pagini recente » Cod sursa (job #566082) | Cod sursa (job #173180) | Cod sursa (job #128137) | Cod sursa (job #1972971) | Cod sursa (job #2189339)
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int NMAX=1000000;
int v[NMAX+5],c[NMAX+5];
void hn_constr(long long n,int a[NMAX+5])
{
memset(a,0,sizeof(a));
do
{
a[++a[0]]=n%10;
n/=10;
}while(n);
}
long long hn_divide_rest(int a[],long long b)
{
long long r;
int i;
r=0;
for(i=a[0];i>=1;--i)
{
r=r*10+a[i];
r=r%b;
}
return r;
}
void hn_adun(int a[],int b[])
{
int tr,i,aux;;
tr=0;
for(i=1;i<=a[0];++i)
{
aux=(a[i]+b[i]+tr);
a[i]=aux%10;
tr=aux/10;
}
if(tr)
a[++a[0]]=1;
}
void print(int x[])
{
int i;
for(i=x[0];i>=1;--i)
printf("%d",x[i]);
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
long long d,r;
char ch;
while(scanf("%c",&ch) && ch!='\n')
v[++v[0]]=ch-48;
reverse(v+1,v+v[0]+1);
scanf("%lld",&d);
r=hn_divide_rest(v,d);
if(r==0)
print(v);
else
{
long long ans=d-r;
memset(c,0,sizeof(c));
hn_constr(ans,c);
hn_adun(v,c);
print(v);
printf("\n");
}
return 0;
}