Pagini recente » Cod sursa (job #677721) | Cod sursa (job #1102006) | Cod sursa (job #1700026) | Cod sursa (job #2344357) | Cod sursa (job #3152899)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector < pair < int, int > > fact;
int main() {
ifstream f("gfact.in");
ofstream g("gfact.out");
int p, q; f >> p >> q;
for(int i = 2; p > 1 && i * i <= p; i++) {
int k = 0;
while(p % i == 0) {
k++;
p /= i;
}
if(k) {
fact.push_back({i, k * q});
}
}
if(p > 1) {
fact.push_back({p, q});
}
long long l = 1, r = 1e18, ans = 0;
while(l <= r) {
long long m = (l + r) / 2, ok = 1;
for(auto t: fact) {
long long e = 0, p = t.first;
while(p <= m) {
e += m / p;
p *= t.first;
}
if(e < t.second) {
ok = 0;
break;
}
}
if(ok) {
ans = m;
r = m - 1;
}
else {
l = m + 1;
}
}
g << ans << '\n';
f.close();
g.close();
return 0;
}