Pagini recente » Borderou de evaluare (job #1127029) | Cod sursa (job #2640269) | Cod sursa (job #3211012) | Cod sursa (job #2583172) | Cod sursa (job #906905)
Cod sursa(job #906905)
#include<cstdio>
using namespace std;
int put[51],a,q,p,d,m,l1,l2;
long long b;
int putereaa(int x,int d){//la ce putere apare d in x!
int jos,putere=0,i,ci;
jos=d;
while(jos<=x){
putere+=(x/jos);
jos*=d;
}
return putere;
}
void descomp(int cb){
int div=2;
while(cb!=1){
while(cb%div==0){
cb/=div;
put[div]++;
}
div++;
}
}
int main(){
int xx,i,pp,rez;
freopen("gfact.in","r",stdin);
freopen("gfact.out","w",stdout);
scanf("%d%d",&a,&q);
descomp(a);
l1=1;
l2=2000000000;
for(i=1;i<=50;i++){
if(put[i]!=0){
l2=2000000000;
while(l1<=l2){
m=(l1+l2)/2;
xx=putereaa(m,i);
if(xx<q*put[i]){
l1=m+1;
}
else
if(xx>q*put[i])
l2=m-1;
else{
rez=m;
l2=m-1;
}
}
}
}
printf("%d",rez);
return 0;
}