Pagini recente » Cod sursa (job #1175389) | Cod sursa (job #1833547) | Cod sursa (job #2415139) | Cod sursa (job #1168079) | Cod sursa (job #1238261)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int nr_digit=1000001;
class hugeN
{
private:
int x[nr_digit];
public:
hugeN ()
{
memset(x,0,sizeof(x));
x[0]=1;
}
hugeN(char *s)
{
int n,i;
n=strlen(s);
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));
}
void print()
{
for(int i=x[0];i>=1;i--)
printf("%d",x[i]);
printf("\n");
}
hugeN& operator +=(long long ad);
long long operator %(long long d);
};
hugeN& hugeN::operator +=(long long ad)//adun la un nr mare un long long
{
int i=0;
do{
x[++i]=x[i]+ad%10;
x[i+1]=x[i+1]+x[i]/10;
x[i]=x[i]%10;
ad/=10;
}while(ad);
return *this;
}
long long hugeN::operator %(long long d)// rezultat= nr. mare % long long
{
long long r=0;
int i;
for(i=x[0];i>0;i--)
{
r=r*10+ x[i];
r=r%d;
}
return r;
}
int main()
{
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
char c[nr_digit];
int i,j,d;
scanf("%s",&c);
hugeN n(c);
scanf("%lld",&d);
long long r;
r= n % d;
d=d-r;
n += d;
n.print();
return 0;
}