Pagini recente » Cod sursa (job #1920941) | Cod sursa (job #1768526) | Cod sursa (job #3155972) | Cod sursa (job #1785472) | Cod sursa (job #1835538)
#include<bits/stdc++.h>
using namespace std;
long long ans,st,dr,mid;
long long p,q,sol,p1;
long long f(long long x)
{
long long p=1LL*sol;
long long fr=0;
while(p<=x)
{
fr=fr+(x/p);
if(p>(LLONG_MAX/sol)) return fr;
p*=sol;
}
return fr;
}
int main()
{
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%lld%lld",&p,&q);
p1=p;
for(long long i=2LL;(i*i)<=p1 && p>1;i++)
{
if(!(p%i))
{
sol=i;
while(!(p%i)) p/=i;
}
}
if(p>1LL) sol=p;
st=1LL;
dr=LLONG_MAX;
while(st<=dr)
{
long long mid=st+((dr-st)>>1);
if(f(mid)>=q)
{
ans=mid;
dr=mid-1LL;
}
else st=mid+1LL;
}
printf("%lld\n",ans);
return 0;
}