Pagini recente » Cod sursa (job #2923103) | Cod sursa (job #2507093) | Cod sursa (job #3231859) | Cod sursa (job #2919695) | Cod sursa (job #39127)
Cod sursa(job #39127)
#include <cstdio>
#include <cstdlib>
#include <cstring>
const int NC = 1000000;
int n[NC], dd[NC];
long long d,r;
int mod (int A[], int B) {
int i, t = 0;
for (i = A[0]; i > 0; i--)
t = (t * 10 + A[i]) % B;
return t;
}
void add (int A[], int B[]) {
int i, t = 0;
for (i=1; i<=A[0] || i<=B[0] || t; i++, t/=10)
A[i] = (t += A[i] + B[i]) % 10;
A[0] = i - 1;
}
void trans (int a, int A[]) {
for (int b = a; b > 0; b /= 10) {
A[++A[0]] = b % 10;
}
for (int i = 1; i <= A[0]/2; ++i) {
A[i] ^= A[A[0]-i+1];
A[A[0]-i+1] ^= A[i];
A[i] ^= A[A[0]-i+1];
}
}
void print (int A[]) {
for (int i = A[0]; i > 0; --i) {
printf("%d",A[i]);
}
printf("\n");
}
int main() {
freopen("next.in","r",stdin);
freopen("next.out","w",stdout);
char *s = (char*) malloc((NC+1) * sizeof(char));
scanf("%s",s);
n[0] = strlen(s);
for (int i = 1; i<=n[0]; ++i) {
n[n[0]-i+1] = s[i-1] - '0';
}
scanf("%lld",&d);
r = mod(n,d);
d = (d - r) % d;
trans(d,dd);
add(n,dd);
print(n);
return 0;
}