Pagini recente » Cod sursa (job #1715887) | Cod sursa (job #2438570) | Cod sursa (job #1076306) | Cod sursa (job #2727098) | Cod sursa (job #2828831)
#include <iostream>
#include <fstream>
#define ll long long
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
ll get_maxdiv(ll x){
ll rasp = 1, div = 2;
while(div * div <= x){
if(x % div == 0){
while(x % div == 0) x /= div;
rasp = max(rasp, div);
}
div++;
}
if(x > 1) rasp = max(rasp, x);
return rasp;
}
ll get_ap(ll n, ll d){
ll cnt = 0;
while(n % d == 0) n /= d, cnt++;
return cnt;
}
ll exponent(ll n, ll d){
ll s = 0, p = d;
while(p <= n) s += (n / p), p *= d;
return s;
}
int main(){
ll p, q;
fin >> p >> q;
ll d = get_maxdiv(p), ap = get_ap(p, d) * q;
long long st = 1, dr = (1ll << 62), ans = 0;
while(st <= dr){
ll mij = (st + dr) / 2;
if(exponent(mij, d) >= ap) dr = mij - 1, ans = mij - (mij % d);
else st = mij + 1;
}
fout << ans;
return 0;
}