Pagini recente » Cod sursa (job #2472716) | Cod sursa (job #3314414) | Cod sursa (job #183038) | Cod sursa (job #1959919) | Cod sursa (job #3331076)
#include <bits/stdc++.h>
#define int long long
#pragma GCC optimize ("O3")
#define pb push_back
using namespace std;
#define f first
#define s second
int caut(int c, int d){
int l = 1, r = 2 * c * d;
while(l + 1 < r){
int mid = (l + r) / 2;
int cnt = 0, pw = d;
while(pw <= mid){
cnt += mid / pw;
if(pw > mid / d) break;
pw *= d;
}
if(cnt >= c)r = mid;
else l = mid;
}
return r;
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
ifstream cin ("gfact.in");
ofstream cout ("gfact.out");
int p, q;cin >> p >> q;
int ff = 0;
for(int div=2;div * div <= p;div++){
int c = 0;
while(p % div == 0){
p /= div;
c++;
}
if(c != 0)ff = max(ff, caut(c * q, div));
}
if(p > 1)ff = max(ff, caut(q, p));
cout << ff << "\n";
return 0;
}