Pagini recente » Cod sursa (job #2045039) | Cod sursa (job #1979623) | Cod sursa (job #2289754) | Cod sursa (job #2763889) | Cod sursa (job #1587503)
#include <fstream>
using namespace std;
ifstream cin("gfact.in");
ofstream cout("gfact.out");
int p, q;
long long find_fact(int f, int p)
{
long long st = 0, dr = 1ll * f * p;
while(st<=dr)
{
long long mij = (st+dr)/2;
int nr = 0;
long long pf = f;
while(mij >= pf)
{
nr = nr + mij / pf;
pf = pf * f;
}
if(nr < p)
st = mij + 1;
else
dr = mij - 1;
}
return st;
}
int main()
{
cin>>p>>q;
long long ans = 0;
int f = 2;
while(p > 1)
{
int put = 0;
if(f * f > p)
f = p;
while(p%f==0)
{
put++;
p = p / f;
}
long long rez = find_fact(f, put*q);
if(rez > ans)
ans = rez;
f++;
}
cout<<ans;
return 0;
}