Pagini recente » Cod sursa (job #894180) | Cod sursa (job #2146998) | Cod sursa (job #2955098) | Cod sursa (job #2079457) | Cod sursa (job #1747417)
#include <cstdio>
#include <cstring>
using namespace std;
const int MAX_DIGITS = 1000010;
const int MAXN = 1000000;
char s[MAXN + 5];
class HugeN{
private: int x[MAX_DIGITS];
public:
HugeN(){
x[0] = 1;
memset(x, 0, sizeof(x));
}
HugeN(char *s){
x[0] = strlen(s);
for (int i = 1; i <= x[0]; i ++)
x[i] = s[x[0] - i] - '0';
}
void print(){
for (int i = x[0]; i >= 1; i --)
printf("%d", x[i]);
printf("\n");
}
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;
}
int main(){
freopen("next.in", "r", stdin);
freopen("next.out", "w", stdout);
long long d, r;
gets(s);
HugeN a(s);
scanf("%lld", &d);
r = a % d;
if (r == 0){
a.print();
return 0;
}
a += (d - r);
a.print();
return 0;
}