Pagini recente » Cod sursa (job #2626898) | Cod sursa (job #3268849) | Cod sursa (job #552988) | Cod sursa (job #13146) | Cod sursa (job #2085034)
#include <fstream>
int v1[1000000], v2[1000000], nr;
int main() {
std::ifstream in("gfact.in");
std::ofstream out("gfact.out");
int p, q, d = 2, c;
in >> p >> q;
while (d * d <= p) {
if (p % d == 0) {
v1[nr] = d;
c = 0;
while (p % d == 0) {
p /= d;
c++;
}
v2[nr] = c * q;
nr++;
}
d++;
}
if (p > 1) {
v1[nr] = p;
v2[nr] = q;
nr++;
}
int i, result;
long long r = 0, r2, pas = 1LL << 45, count;
while (pas > 0) {
result = 0;
for (i = 0; i < nr; i++) {
count = 0;
r2 = r + pas;
while (r2 > 0) {
r2 /= v1[i];
count += r2;
}
if (count < v2[i]) {
i = nr;
result = 1;
}
}
if (result) r += pas;
pas >>= 1;
}
out << (r + 1);
}