Pagini recente » Cod sursa (job #1095956) | Cod sursa (job #1051519) | Cod sursa (job #725979) | Cod sursa (job #1126721) | Cod sursa (job #1123044)
#include <fstream>
using namespace std;
long long p,q,sol,pt,st,dr,i,j,mid,s,poz;
bool ok;
int main() {
ifstream f("gfact.in");
ofstream g("gfact.out");
f>>p>>q;
if(p==1) {
g<<1;
return 0;
}
for(i=2;i*i<=p;i++) {
pt=0;
ok=0;
if(p%i==0)
ok=1;
while (p%i==0) {
pt++;
p/=i;
}
st=0;
dr=(1LL<<62);
if(ok)
while(st<=dr) {
s=0;
mid=(st+dr)/2;
for (j=i;j<=mid;j=j*i)
s+=mid/j;
if (s<pt*q)
st=mid+1;
else {
dr=mid-1;
poz=mid;
}
}
if (sol<poz)
sol=poz;
}
if(p!=1) {
st=0;
dr=(1LL<<62);
while(st<=dr) {
s=0;
mid=(st+dr)/2;
for (j=p;j<=mid;j=j*i)
s+=mid/j;
if (s<q)
st=mid+1;
else {
dr=mid-1;
poz=mid;
}
}
if (sol<poz)
sol=poz;
}
g<<sol<<"\n";
return 0;
}