Pagini recente » Cod sursa (job #1389919) | Cod sursa (job #2001899) | Cod sursa (job #434846) | Cod sursa (job #596731) | Cod sursa (job #1118614)
# include <fstream>
# include <cmath>
using namespace std;
ifstream f("gfact.in");
ofstream g("gfact.out");
int p,k,Max,sol,r,q;
int cauta_bin(int cs, int k, int r)
{
int ci=1,nr=0,IMP=0,mij=0;
while(ci<=cs)
{
mij=(ci+cs)/2;
nr=0; IMP=k;
while(mij/IMP>0)
{
nr+=(mij/IMP);
IMP*=k;
}
if (nr==r) return mij;
else if(nr>r) cs=mij-1;
else ci=mij+1;
}
return 0;
}
int main()
{
f>>p>>q;
for(k=2; k*k<=p; ++k)
{
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;
}