Pagini recente » Cod sursa (job #4568) | Cod sursa (job #3266469) | Cod sursa (job #1282303) | Cod sursa (job #248918) | Cod sursa (job #39545)
Cod sursa(job #39545)
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
int n[1000000];
int dd[20];
long long d,r;
long long rest ( int a[], long long d ) {
long long r = 0;
for (int i = a[0]; i >= 1; --i) {
r = (r*10+a[i]) % d;
}
return r;
}
void add ( int a[], int b[] ) {
int t = 0;
int min = (a[0] < b[0]) ? a[0] : b[0];
for (int i = 1; i<=min || t>0; ++i) {
if (i > a[0]) ++a[0];
a[i] += (i > b[0]) ? 0 : b[i] + t;
t = a[i] / 10;
a[i] %= 10;
}
}
int main() {
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
n[0] = 0;
do {
char c;
scanf("%c",&c);
if (c == '\n') {
for (int i = 1; i <= n[0] / 2; ++i) {
n[i] ^= n[n[0]-i+1];
n[n[0]-i+1] ^= n[i];
n[i] ^= n[n[0]-i+1];
}
break;
} else {
n[++n[0]] = c - '0';
}
} while (true);
scanf("%lld",&d);
r = rest(n,d);
r = (d - r) % d;
dd[0] = (int) log10( (long double) r) +1;
for (int i = 1; r > 0; r /= 10, ++i) {
dd[i] = r % 10;
}
add(n,dd);
for (int i = n[0]; i > 0; --i) printf("%d",n[i]);
printf("\n\n");
return 0;
}