Pagini recente » Cod sursa (job #3264523) | Cod sursa (job #1974362) | Cod sursa (job #2863737) | Cod sursa (job #2584298) | Cod sursa (job #2891222)
#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 = 1 , 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;
}