Pagini recente » Cod sursa (job #1302947) | Cod sursa (job #1610406) | Cod sursa (job #1213748) | Cod sursa (job #1043983) | Cod sursa (job #1777258)
#include <cstdio>
#include <cstring>
const int nmax=1000000;
using namespace std;
class Hugen
{
private:
int x[nmax+5];
public:
Hugen()
{
x[0]=1;
}
Hugen(long long nr)
{
do
{
x[++x[0]]=nr%10;
nr/=10;
}while(nr);
}
Hugen(const Hugen&other)
{
memcpy(x, other.x, sizeof(other.x));
}
Hugen(char *s)
{
x[0]=strlen(s);
for(register int i=1;i<=x[0];i++)
x[i]=s[x[0]-i]-'0';
}
void print()
{
int i;
for(i=x[0];i>=1;i--)
printf("%d", x[i]);
printf("\n");
}
Hugen operator+=(long long k);
long long operator%(long long k);
};
Hugen Hugen::operator+=(long long k)
{
Hugen other(k);
x[0]=x[0]>other.x[0]?x[0]:other.x[0];
int aux, tr=0;
for(register int i=1;i<=x[0];i++)
{
aux=x[i]+tr+other.x[i];
x[i]=aux%10;
tr=aux/10;
}
if(tr)
x[++x[0]]=tr;
return *this;
}
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])%k;
return r;
}
char s[nmax+1];
int main()
{
freopen("next.in", "r", stdin);
freopen("next.out", "w", stdout);
long long d;
gets(s);
Hugen n(s);
scanf("%lld", &d);
long long p;
p=n%d;
if(p==0)
n.print();
else
{
d=d-p;
n+=d;
n.print();
}
return 0;
}