Pagini recente » Cod sursa (job #1054664) | Cod sursa (job #1761152) | Statistici poparobert (poparobert) | Cod sursa (job #1279489) | Cod sursa (job #37433)
Cod sursa(job #37433)
#include <stdio.h>
const int N_MAX = 1048576;
int N[N_MAX], pl[N_MAX];
long long D, rest;
long long mod(int A[], int B)
{
int i;
long long t = 0;
for (i = A[0]; i > 0; i --) {
t = (t * 10 + A[i]) % B;
}
return t;
}
void rev(int A[])
{
int i, aux;
for (i = 1; i <= A[0] / 2; i ++) {
aux = A[i];
A[i] = A[A[0] - i + 1];
A[A[0] - i + 1] = aux;
}
}
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;
}
int main()
{
freopen("next.in", "r", stdin);
#ifndef _KKT_
freopen("next.out", "w", stdout);
#endif
char c;
scanf("%c", &c);
while (c != '\n') {
N[++ N[0]] = c - '0';
scanf("%c", &c);
}
rev(N);
scanf("%lld\n", &D);
rest = mod(N, D);
int i;
if (rest == 0) {
for (i = N[0]; i >= 1; i --) {
printf("%d", N[i]);
}
printf("\n");
} else {
D -= rest;
while (D > 0) {
pl[++ pl[0]] = D % 10;
D /= 10;
}
add(N, pl);
for (i = N[0]; i >= 1; i --) {
printf("%d", N[i]);
}
printf("\n");
}
return 0;
}