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