Pagini recente » Cod sursa (job #1769053) | Cod sursa (job #2741037) | Cod sursa (job #2124083) | Cod sursa (job #3210331) | Cod sursa (job #1236261)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
class HugeN
{
private:
int x[1000000];
public:
HugeN()
{
memset(x,0,sizeof(x));
x[0]=1;
}
HugeN(char a[])
{
memset(x,0,sizeof(x));
x[0]=strlen(a);
for(int i=1,j=x[0]-1; i<=x[0]; i++,j--)
x[i]=a[j]-'0';
}
HugeN(long long n)
{
memset(x,0,sizeof(x));
do
{
x[++x[0]]=n%10;
n/=10;
}
while(n!=0);
}
void print()
{
for(int i=x[0]; i>=1; i--)
printf("%d",x[i]);
printf("\n");
}
HugeN& operator+(const HugeN &other)
{
HugeN rez;
int i,tr;
rez.x[0]=max(x[0],other.x[0]);
tr=0;
for(i=1; i<=x[0]; i++)
{
rez.x[i]=x[i]+other.x[i]+tr;
tr=rez.x[i]/10;
rez.x[i]%=10;
}
if(tr>0)
rez.x[0]++,rez.x[rez.x[0]]=tr;
return rez;
}
long long operator%(long long k)
{
long long r=0,i;
for(i=x[0]; i>0; i--)
{
r=r*10+x[i];
r%=k;
}
return r;
}
};
char s[1000000];
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
long long d;
gets(s);
HugeN n(s);
scanf("%lld",&d);
HugeN x(d-n%d);
n=n+x;
n.print();
return 0;
}