Pagini recente » Cod sursa (job #823256) | Cod sursa (job #316515) | Cod sursa (job #2858553) | Cod sursa (job #2974107) | Cod sursa (job #2440086)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAX_DIGITS=1024;
const int BASE=10;
class HugeN
{
private:
int x[MAX_DIGITS];
public:
HugeN()
{
memset(x,0,sizeof(x));
x[0]=1;
}
HugeN(int n)
{
memset(x,0,sizeof(x));
do{
++x[0];
x[x[0]]=n%10;
n=n/10;
}while(n>0);
}
HugeN(const HugeN & other)
{
memcpy(x,other.x,sizeof(other.x));
}
HugeN(char s[101])
{
int n,i;
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--)
{
cout<<x[i];
}
cout<<endl;
}
HugeN operator + (const HugeN & other);
int operator % (int k);
HugeN operator /= (int k);
};
HugeN HugeN::operator + (const HugeN & other)
{
int tr,i,k;
HugeN c;
c.x[0]=max(x[0],other.x[0]);
tr=0;
for(i=1;i<=c.x[0];i++)
{
k=x[i]+other.x[i]+tr;
c.x[i]=k%10;
tr=k/10;
}
if(tr>0)
{
c.x[0]++;
k=c.x[0];
c.x[k]=tr;
}
return c;
}
int HugeN::operator % (int k)
{
int i,r;
r=0;
for(i=x[0];i>=1;i--)
{
r=r*10+x[i];
r=r%k;
}
return r;
}
HugeN HugeN::operator /= (int k)
{
int i,r;
r=0;
for(i=x[0];i>=1;i--)
{
r=r*10+x[i];
x[i]=r/k;
r=r%k;
}
while(x[0]>1 && x[x[0]]==0)
{
x[0]--;
}
return *this;
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
int d,rest,p;
char s[1000005];
cin.getline(s,1000000);
HugeN a(s),b;
scanf("%d",&d);
rest=a%d;
p=d-rest;
HugeN c(p);
b=a+c;
b.print();
return 0;
}