Pagini recente » Cod sursa (job #2322157) | Cod sursa (job #812151) | Cod sursa (job #2461176) | Cod sursa (job #1054598) | Cod sursa (job #3003371)
// https://www.infoarena.ro/problema/gfact
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
ifstream fin("gfact.in");
ofstream fout("gfact.out");
#define int long long
signed main() {
int p, q;
fin>>p>>q;
vector<pair<int,int>> f{};
for (int d=2; d*d<=p; ++d) {
if (p%d==0) {
int e=0;
while (p%d==0) {
p /= d;
++e;
}
f.push_back({d, e*q});
}
}
if (p>1) f.push_back({p, q});
int l=1, r=1e18, res=r;
while (l <= r) {
int mid=(l+r)/2;
bool ok=true;
for (int i=0; i<(int)f.size(); ++i) {
int x=f[i].first, e=0;
while (x <= mid) {
e += mid/x;
x *= f[i].first;
}
if (e<f[i].second) ok = false;
}
if (ok) {
res = mid;
r = mid-1;
} else l = mid+1;
}
fout<<res;
}