Pagini recente » Cod sursa (job #1922438) | Cod sursa (job #1654183) | Cod sursa (job #2788164) | Cod sursa (job #1062112) | Cod sursa (job #1115878)
#include<fstream>
#include<cmath>
using namespace std;
long long p;
int q;
long long cauta_bin(long long dr,int k,int r)
{
long long st,nr,pr,mij;
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;
int x=sqrt(p)+1;
int k=0,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;
int r=q;
sol=cauta_bin(2*r*k,k,r);
if (sol>Max) Max=sol;
}
g<<sol<<'\n';
return 0;
}