Pagini recente » Cod sursa (job #3239909) | Cod sursa (job #880511) | Cod sursa (job #1095242) | Cod sursa (job #2313916) | Cod sursa (job #2916083)
#include <fstream>
using namespace std;
ifstream fin("next.in");
ofstream fout("next.out");
const int MAX_N = 1e6 + 1e3;
int a[MAX_N + 1], b[MAX_N + 1];
void divide(int a[], int b) {
int t = 0, i;
for (i = a[0]; i >= 1; i--, t %= b) {
a[i] = (t = t * 10 + a[i]) / b;
}
for(; a[0] > 1 && !a[a[0]]; a[0]--);
}
void add(int a[], int b) {
int i = 1;
while (b) {
b += a[i];
a[i] = b % 10;
b /= 10;
i++;
}
i--;
if (i > a[0]) {
a[0] = i;
}
}
void mult(int a[], long long x) {
long long t = 0, i = 1;
while (i <= a[0] || t > 0) {
t += a[i] * x;
a[i] = t % 10;
t /= 10;
i++;
}
i--;
if (i > a[0]) {
a[0] = i;
}
for(; a[0] > 1 && !a[a[0]]; a[0]--);
}
bool comp(int a[], int b[]) {
if (a[0] != b[0]) {
return false;
}
for (int i = 1; i <= a[0]; i++) {
if (a[i] != b[i]) {
return false;
}
}
return true;
}
void print(int a[]) {
for (int i = a[0]; i >= 1; i--) {
fout << a[i];
}
}
signed main() {
string s;
long long d;
fin >> s >> d;
a[0] = s.size();
for (int i = s.size() - 1; i >= 0; i--) {
a[a[0] - i] = s[i] - '0';
}
divide(a, d);
for (int i = 0; i <= a[0]; i++) {
b[i] = a[i];
}
mult(b, d);
mult(a, d);
if (comp(a, b)) {
print(a);
return 0;
}
add(b, d);
print(b);
return 0;
}