Pagini recente » Cod sursa (job #653875) | Cod sursa (job #2719248) | Istoria paginii runda/cnmnarad2/clasament | Cod sursa (job #1089449) | Cod sursa (job #1301996)
#include <cstdio>
#define DIM 40000000000000
using namespace std;
long long p,q,i,j,st,dr,mid,nr,minim=DIM;
long long a[60000],b[60000];
int verif(int x){
int i,nrap,aux;
for(i=1;i<=nr;i++){
nrap=0;
aux=a[i];
while(x/aux!=0){
nrap+=x/aux;
aux*=a[i];
}
if(nrap<b[i])
return 0;
}
return 1;
}
int main(){
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%ld%ld",&p,&q);
for(i=2;i*i<=p;i++){
if(p%i==0){
a[++nr]=i;
while(p%i==0)
b[nr]+=q,p/=i;
}
}
if(p!=1){
a[++nr]=p;
b[nr]=q;
}
st=1;dr=DIM;
while(st<=dr){
mid=(st+dr)>>1;
if(verif(mid)){
if(mid<minim)
minim=mid;
dr=mid-1;
}
else
st=mid+1;
}
printf("%ld",minim);
return 0;
}