Pagini recente » Cod sursa (job #2444412) | Cod sursa (job #1391387) | Cod sursa (job #2109390) | Cod sursa (job #2433269) | Cod sursa (job #1236792)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int Max_digits=100020;
const int base=10;
class HugeN
{
private:
int x[Max_digits];
public:
HugeN()
{
memset(x,0,sizeof(x));
x[0]=1;
}
HugeN(long long n)
{
memset(x,0,sizeof(x));
x[0]=0;
do
{
x[++x[0]]=n%10;
n/=10;
}while(n);
}
HugeN(char *s)
{
memset(x,0,sizeof(x));
int n=strlen(s),i;
x[0]=n;
for(i=n-1;i>=0;i--)
{
x[n-i]=s[i]-'0';
}
}
HugeN(const HugeN&other)
{
memcpy(x,other.x,sizeof(other.x));
}
int cmp(const HugeN&other)
{
if(x[0]<other.x[0]) return -1;
else if(x[0]>other.x[0]) return 1;
for(int i=x[0];i>0;i--)
if(x[i]<other.x[i]) return -1;
else if(x[i]>other.x[i]) return 1;
return 0;
}
void print()
{
for(int i=x[0];i>=1;i--)
{
printf("%d",x[i]);
}
printf("\n");
}
long long operator %(long long k);
HugeN& operator+=(long long k);
};
HugeN& HugeN::operator +=(long long k)
{
int i;
long long t=k;
for(i=1;i<=x[0];++i)
{
t+=x[i];
x[i]=t%10;
t/=10;
}
while(t){
x[0]++;x[x[0]]=t%10;t/=10;
}
return *this;
}
long long HugeN::operator %(long long k)
{
int i;
long long r=0;
for(i=x[0];i>0;i--)
{
r=(long long)r*10+x[i];
r%=k;
}
return r;
}
char s[1000005];
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
scanf("%s",s);
HugeN n(s);
long long d,r;
scanf("%I64d",&d);
r=n%d;
if(r)
{
d=d-r;
n+=d;
}
n.print();
return 0;
}