Pagini recente » Clasamentul arhivei de probleme | Cod sursa (job #2438662) | Cod sursa (job #1760911) | Cod sursa (job #2748781) | Cod sursa (job #1747977)
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;
#define NMAX 1000000
char s[NMAX];
class HugeN
{
private: int x[NMAX];
public: HugeN();
HugeN(const char *s) {
int a=strlen(s);
memset(x,0,sizeof(x));
x[0]=0;
for (a--;a>=0;a--)
x[++x[0]]=s[a]-'0';
}
void get_huge();
HugeN &operator+=(long long k);
long long operator%(long long k);
};
HugeN &HugeN::operator+=(long long k){
int i;
long long aux,tr=k;
for (i=1;i<=x[0];i++){
aux=x[i]+tr;
x[i]=aux%10;
tr=aux/10;
}
while (tr){
x[++x[0]]=tr%10;
tr/=10;
}
return *this;
}
long long HugeN::operator %(long long k){
int i;
long long r=0;
for (i=x[0];i>=1;i--)
r=(r*10+x[i])%k;
return r;
}
void HugeN::get_huge()
{
int i;
for (i=x[0];i>=1;i--)
printf("%d", x[i]);
printf ("\n");
}
int main()
{
long long d,j;
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
scanf("%s%lld",s, &d);
HugeN r(s);
j=r%d;
if (j==0)
r.get_huge();
else
r+=(d-j),r.get_huge();
return 0;
}