Pagini recente » Cod sursa (job #2466922) | Cod sursa (job #1826680) | Cod sursa (job #1042830) | Cod sursa (job #2738683) | Cod sursa (job #1115881)
#include<fstream>
#include<cmath>
using namespace std;
long long p;
int q;
long long cauta_bin(long long dr,long long k,long long r)
{
long long st=0,nr=0,pr=0,mij=0;
st=1;
while(st<=dr)
{
mij=(st+dr)/2;
nr=0; pr=k;
while((mij/pr)!=0) { nr+=(mij/pr); pr*=k; }
if(nr==r)
{
while(mij%k!=0) mij--;
break;
}
else if(nr>r) dr=mij-1;
else st=mij+1;
}
return mij;
}
int main()
{
fstream f("gfact.in",ios::in);
fstream g("gfact.out",ios::out);
f>>p>>q;
long long k=0;
long long Max=0;
long long sol=0;
for(k=2;k*k<=p;++k)
{
int r=0;
while(p%k==0) {++r; p/=k;}
if(r!=0)
{
sol=cauta_bin(2*r*k*q,k,r) ;
if (sol>Max) Max=sol;
}
}
if(p>1)
{
k=p;
long long r=q;
sol=cauta_bin(2*r*k,k,r);
if (sol>Max) Max=sol;
}
g<<sol<<'\n';
return 0;
}