Pagini recente » Cod sursa (job #3365722) | Cod sursa (job #3368520) | Cod sursa (job #3365716) | Cod sursa (job #3368522) | Cod sursa (job #3367412)
#include <bits/stdc++.h>
using namespace std;
#define MAX_DIGITS 1000000
struct Huge {
char v[MAX_DIGITS + 1];
int n;
Huge() {
// Initializam numarul cu valoarea 0
memset(v, 0, sizeof(v));
n = 1;
}
void read(FILE* fin) {
int ch, i, j;
char aux;
// Sarim peste spatii si linii noi
ch = fgetc(fin);
while (ch != EOF && !isdigit(ch))
ch = fgetc(fin);
// Citim cifrele
n = 0;
while (ch != EOF && isdigit(ch)) {
v[n++] = ch - '0';
ch = fgetc(fin);
}
// Intoarcem numarul
i = 0;
j = n - 1;
while (i < j) {
aux = v[i];
v[i] = v[j];
v[j] = aux;
++i;
--j;
}
}
long long operator%(long long small) {
long long r;
int i;
r = 0;
for (i = n - 1; i >= 0; --i)
r = (r * 10 + v[i]) % small;
return r;
}
Huge& operator+=(long long small) {
long long t;
int i;
t = small;
for (i = 0; t > 0; ++i) {
t += v[i];
v[i] = t % 10;
t /= 10;
}
if (i > n)
n = i;
// Intoarcem referinta la acest obiect
return *this;
}
void print(FILE* fout) {
int i;
for (i = n - 1; i >= 0; --i)
fputc('0' + v[i], fout);
fputc('\n', fout);
}
};
Huge number;
int main() {
FILE *fin, *fout;
fin = fopen("next.in", "r");
fout = fopen("next.out", "w");
long long d, r;
number.read(fin);
fscanf(fin, "%lld", &d);
r = number % d;
number += (d - r) % d;
number.print(fout);
fclose(fin);
fclose(fout);
return 0;
}