Pagini recente » Cod sursa (job #2914421) | Cod sursa (job #3004263) | Cod sursa (job #2931059) | Cod sursa (job #2423137) | Cod sursa (job #2526809)
#include <fstream>
using namespace std;
ifstream in ("gfact.in");
ofstream out ("gfact.out");
const long long VM = 6e13;
pair <long long, long long> v [100000];
long long n;
long long putere (long long x, long long p) {
long long r;
r = 0;
while (x >= p) {
x /= p;
r += x;
}
return r;
}
bool bun (long long x) {
long long b, e;
for (long long i = 1; i <= n; i ++) {
b = v [i].first;
e = v [i].second;
if (b !=0) if (putere (x, b) < e)
return false;
}
return true;
}
long long cbin () {
long long st, dr, m;
st = 1; dr = VM;
while (st < dr) {
m = (st + dr) / 2;
if (bun (m))
dr = m;
else
st = m + 1;
}
return st;
}
int main() {
long long p, q, r, put;
in >> p >> q;
n = 0;
for (long long d = 2; d * d <= p; d ++) {
n ++; put = 0;
while (p % d == 0) {
p /= d;
put ++;
}
if (put > 0) {
v [n].first = d;
v [n].second = put * q;
}
}
if (p > 1) {
n ++;
v [n].first = p;
v [n].second = q;
}
r = cbin ();
out << r;
return 0;
}