Pagini recente » Cod sursa (job #152219) | Cod sursa (job #1218319) | Cod sursa (job #1047804) | Cod sursa (job #2910499) | Cod sursa (job #2440113)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAX_DIGITS=1000005;
class HugeN
{
private:
int x[MAX_DIGITS];
public:
HugeN()
{
memset(x,0,sizeof(x));
}
HugeN(long long a)
{
do
{
x[++x[0]]=a%10;
a=a/10;
}
while(a);
}
HugeN(char s[MAX_DIGITS])
{
int i,n;
memset(x,0,sizeof(x));
n=strlen(s);
x[0]=n;
for(i=n-1;i>=0;i--)
x[n-i]=s[i]-'0';
}
void print()
{
int i;
for(i=x[0];i>=1;i--)
printf("%d",x[i]);
}
HugeN operator/(long long k);
long long operator%(long long k);
HugeN operator+=(long long k);
};
HugeN HugeN :: operator+=(long long k)
{
int i,aux,tr=0;
for(i=1;i<=x[0];i++)
{
aux=x[i]+k%10+tr;
k=k/10;
x[i]=aux%10;
tr=aux/10;
}
if(tr)
x[++x[0]]=tr;
return (*this);
}
HugeN HugeN :: operator/(long long k)
{
HugeN c;
int i;
long long r=0;
c.x[0]=x[0];
for(i=c.x[0];i>=1;i--)
{
r=r*10+x[i];
c.x[i]=r/k;
r=r%k;
}
while(c.x[c.x[0]]==0 && c.x[0]>1)
c.x[0]--;
return c;
}
long long HugeN :: operator%(long long k)
{
int i;
long long r=0;
for(i=x[0];i>=1;i--)
{
r=r*10+x[i];
r=r%k;
}
return r;
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
int l;
long long d,r;
char s[MAX_DIGITS];
fgets(s,MAX_DIGITS,stdin);
l=strlen(s);
s[l-1]=NULL;
HugeN a(s);
scanf("%lld",&d);
r=a%d;
if(r!=0)
{
d=d-r;
a+=d;
}
a.print();
return 0;
}