Pagini recente » Cod sursa (job #1328368) | Cod sursa (job #2872169) | Cod sursa (job #250216) | Cod sursa (job #2978551) | Cod sursa (job #2891226)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("gfact.in");
ofstream fout ("gfact.out");
long long d = 2;
int p, q, ans, n;
vector<pair<int, int>>v;
bool solve (int x) {
for (int i=0; i<n; i++) {
int n = x, cnt = 0, dv = v[i].first;
while (n > 0) {
cnt += n / dv;
n = n / dv;
}
if (cnt < v[i].second) {
return false;
}
}
return true;
}
int main() {
ios_base::sync_with_stdio(false);
fin.tie(NULL);
fin >> p >> q;
while (p > 1) {
int z = 0;
while (p % d == 0) {
p = p / d;
z += 1;
}
if (z > 0) {
v.push_back(make_pair(d, z * q));
}
d += 1;
if (d * d > p && p > 1) {
d = p;
}
}
n = v.size();
int st = 0, dr = 2e9;
while (st <= dr) {
int mij = st + (dr - st) / 2;
if (solve(mij)) {
ans = mij;
dr = mij - 1;
}
else {
st = mij + 1;
}
}
fout << ans;
}