Pagini recente » Cod sursa (job #960975) | Cod sursa (job #1118307) | Cod sursa (job #243954) | Cod sursa (job #1243198) | Cod sursa (job #2398975)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
unsigned long long p,q,a,sol,j,nr,r,k=2,x,ma,pr,i,m;
int main()
{
fin>>p>>q;
for(k=2;k*k<=p;++k)
{
r=0;
while(p%k==0) {++r; p/=k;}
if(r!=0)
{
r=r*q;
i=1; j=2*r*k;
while(i<=j)
{
m=(i+j)/2;
nr=0; pr=k;
while((m/pr)!=0) { nr+=(m/pr); pr*=k; }
if(nr==r)
{
while(m%k!=0) m--;
break;
}
else if(nr>r) j=m-1;
else i=m+1;
}
if(m>ma)ma=m;
}
}
if(p>1)
{k=p; r=q;
i=1; j=2*r*k;
while(i<=j)
{
m=(i+j)/2;
nr=0; pr=k;
while((m/pr)!=0) { nr+=(m/pr);pr*=k; }
if(nr==r)
{
while(m%k!=0) m--;
break;
}
else if(nr>r) j=m-1;
else i=m+1;
}
if(m>ma)ma=m;
}
fout<<ma<<endl;
return 0;
}