Pagini recente » Cod sursa (job #2301767) | Cod sursa (job #1549246) | Cod sursa (job #1119014) | Cod sursa (job #177339) | Cod sursa (job #1747544)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
#define NMAX 1000005
char s[NMAX];
class HugeN
{
private: int x[NMAX];
public: HugeN();
HugeN(int nr);
HugeN(char *s){
int l=strlen(s);
memset(x,0,sizeof(x));
x[0]=0;
for(l--;l>=0;l--)
x[++x[0]]=s[l]-'0';
}
HugeN(const HugeN&other);
void get_huge();
HugeN&operator*(const int k){
HugeN temp;
int tr,i,aux;
tr=0;
temp.x[0]=x[0];
for(i=1;i<=temp.x[0];i++)
temp.x[i]=x[i]*k;
for(i=1;i<=temp.x[0];i++){
aux=temp.x[i]+tr;
temp.x[i]=aux%10;
tr=aux/10;
}
while(tr){
aux=temp.x[0];
aux++;
temp.x[aux]=tr%10;tr/=10;
temp.x[0]=aux;
}
return temp;
};
HugeN operator +(long long k){
long long trn,aux;
trn=k;
for(int i=1;i<=x[0];i++){
aux=x[i]+trn;
x[i]=aux%10;
trn=aux/10;
}
while(trn){
x[++x[0]]=trn % 10;
trn/=10;
}
return *this;
};
int cmp(const HugeN&other);
int operator%( int k){
int r=0;
for(int i=x[0];i>=1;--i){
r=r*10+x[i];
r=r%k;
};
return r;
};
};
HugeN::HugeN()
{
memset(x,0,sizeof(x));
x[0]=1;
}
HugeN::HugeN(int nr)
{
memset(x,0,sizeof(x));
do
{
x[++x[0]]=nr%10;
nr/=10;
}while (nr);
}
HugeN::HugeN(const HugeN&other)
{
memset(x,0,sizeof(x));
for (int i=0;i<=other.x[0];i++)
x[i]=other.x[i];
}
void HugeN::get_huge()
{
int i;
for (i=x[0];i>=1;i--)
printf("%d", x[i]);
printf ("\n");
}
int HugeN::cmp(const HugeN&other)
{
if (x[0]<other.x[0])
return -1;
else
if(x[0]>other.x[0])
return 1;
else
{
for (int i=x[0];i>=1;i--) {
if (x[i]>other.x[i])
return 1;
else if (x[i]<other.x[i])
return -1;
}
}
return 0;
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
scanf("%s",s);
HugeN r(s);
long long d,j;
scanf("%lld",&d);
j=r%d;
if(j==0)
r.get_huge();
else{
r=r+(d-j);
r.get_huge();
}
return 0;
}