Pagini recente » Cod sursa (job #2176572) | Cod sursa (job #278508) | Cod sursa (job #2109851) | Cod sursa (job #70329) | Cod sursa (job #1618397)
#include <iostream>
#include <stdio.h>
using namespace std;
int dim;
char cif[1000004];
char t[20];
void mult(long long a) {
int i,t = 0;
for(i = 0; i < dim || t; i++) {
t += cif[i]*a; // nr
cif[i] = t%10;
if(cif[i] >= 10)
cif[i] -= 10;
t /= 10;
}
dim = i;
}
void div(long long a) {
int i,t = 0;
for(i = dim-1; i >= 0; i--) {
t = t*10 + cif[i];
cif[i] = t/a; // nr
t %= a; // nr
}
for(; dim > 1 && cif[dim-1] == 0; dim--);
}
int mod(long long a) {
int i,t = 0;
for(i = dim-1; i >= 0; i--)
t = (t*10 + cif[i])%a;
return t;
}
void add1() {
int i = 0;
cif[i]++;
while(cif[i] >= 10) {
cif[i] -= 10;
cif[i+1]++;
i++;
}
dim = max(i, dim);
}
int main() {
FILE *fin = fopen("next.in", "r");
FILE *fout = fopen("next.out", "w");
long long d = 0;
char c;
fgets(cif, 1000004, fin);
while(isdigit(cif[dim]))
cif[dim] = cif[dim++] - '0';
for(int i = 0; i < dim/2; i++)
swap(cif[i], cif[dim-i-1]);
int k = 0;
fgets(t, 20, fin);
while(isdigit(t[k]))
d = d*10 + t[k++] - '0';
/*add1();
for(int i = dim-1; i >= 0; i--)
printf("%d", (int)cif[i]);*/
if(mod(d) == 0) {
for(int i = dim-1; i >= 0; i--)
fprintf(fout, "%d", (int)cif[i]);
} else {
div(d);
add1();
mult(d);
for(int i = dim-1; i >= 0; i--)
fprintf(fout, "%d", (int)cif[i]);
}
return 0;
}