Pagini recente » Cod sursa (job #2287565) | Cod sursa (job #3233375) | Cod sursa (job #338388) | Cod sursa (job #2061228) | Cod sursa (job #38275)
Cod sursa(job #38275)
#include <stdio.h>
const int N_MAX = 1000001;
int N[N_MAX], pl[20];
long long D, rest;
long long mod(int A[], long long B)
{
int i;
long long t = 0;
for (i = A[0]; i > 0; i --) {
t = (t * 10 + A[i]) % B;
// printf("%lld\n", t);
}
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';
// printf("%c %d\n", c, N[0]);
scanf("%c", &c);
}
// return 0;
int i;
rev(N);
scanf("%lld\n", &D);
rest = mod(N, D);
// return 0;
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;
}