Pagini recente » Cod sursa (job #30370) | Cod sursa (job #2769989)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAX_DIGITS=1000005,BASE=10;
char s[MAX_DIGITS];
class HUGE
{
private:
int x[MAX_DIGITS];
public:
//Constructori
HUGE(long long n)
{
memset(x,0,sizeof(x));
x[0]=0;
do
{
x[++x[0]]=n%10;
n=n/10;
}
while(n>0);
}
HUGE(char s[MAX_DIGITS],int l)
{
memset(x,0,sizeof(x));
int i;
for(i=l-1; i>=0; i--)
x[l-i]=s[i]-'0';
x[0]=l;
}
void print()
{
int i;
for(i=x[0]; i>=1; i--)
printf("%d",x[i]);
printf("\n");
}
//Supraincarcarea operatorilor
HUGE operator+=(long long add);
long long operator%(long long k);
};
HUGE HUGE::operator+=(long long k)
{
//x=x+other.x
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);
}
long long HUGE::operator%(long long k)
{
//c.x=x%k
long long r=0;
int i;
for(i=x[0]; i>=1; i--)
r=(r*BASE+x[i])%k;
return r;
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
long long d,r,add;
int l;
fgets(s,MAX_DIGITS,stdin);
l=strlen(s)-1;
s[l]=NULL;
scanf("%lld",&d);
HUGE N(s,l);
r=N%d;
if(r!=0)
{
add=d-r;
N+=add;
}
N.print();
return 0;
}