Pagini recente » Cod sursa (job #1402658) | Cod sursa (job #1720530) | Cod sursa (job #965424) | Cod sursa (job #1693401) | Cod sursa (job #2136445)
#include<cstdio>
#include<algorithm>
using namespace std;
long long powc(long long num,long long x){
long long rasp=0;
long long nr=x;
while(num>=nr)
rasp=rasp+num/nr,nr=nr*x;
return rasp;}
long long calc(long long x,long long y){
long long st=1,dr=y,mij,last;
while(st<=dr){
mij=(st+dr)/2;
if (powc(x*mij,x)>=y){
last=mij*x;
dr=mij-1;}
else
st=mij+1;}
return last;}
long long maxi(long long a,long long b){
if (a<b)
return b;
return a;}
int main(){
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
long long p,q,i,d,e;
long long rasp=0;
scanf("%lld%lld",&p,&q);
d=2;
while(d*d<=p && p>1){
e=0;
while(p%d==0){
e++;
p=p/d;}
if (e)
rasp=maxi(rasp,calc(d,e*q));}
if (p>1)
rasp=maxi(rasp,calc(p,q));
printf("%lld\n",rasp);
return 0;}