Pagini recente » Cod sursa (job #53637) | Cod sursa (job #2712231) | Cod sursa (job #1195356) | Cod sursa (job #833615) | Cod sursa (job #2067530)
#include <bits/stdc++.h>
using namespace std;
long long legendre(long long n, int p) {
long long ans=0;
while (n)
n/=p,ans+=n;
return ans;
}
int main()
{
ifstream cin("gfact.in");
ofstream cout("gfact.out");
int p,q,k,l,i;
cin>>p>>q;
long long st=2,dr=k*q,ans=dr+1;
for (i=2;i*i<=p;i++)
if (p%i==0) {
k=i,l=0;
while (p%i==0)
p/=i,l++;
}
if (p>1)
k=p,l=1;
q*=l;
while (st<=dr-2) {
long long mid=(st+dr)>>1;
if (legendre(mid,k)>=q)
ans=mid,dr=mid-1;
else
st=mid+1;
}
cout<<ans<<'\n';
return 0;
}