Pagini recente » Cod sursa (job #2321186) | Cod sursa (job #221761) | Cod sursa (job #888286) | Cod sursa (job #2172962) | Cod sursa (job #907676)
Cod sursa(job #907676)
#include <fstream>
using namespace std;
ifstream in("gfact.in");
ofstream out("gfact.out");
long long p,q,baz[100],exp[100],num=0;
void desc(long long n){
long long i=2,k;
while(i*i<=n){
if(n%i==0){
k=0;
while(n%i==0){
n/=i;
k++;
}
baz[++num]=i;
exp[num]=k;
}
i++;
}
if(n!=1){
baz[++num]=n;
exp[num]=1;
}
}
long long verif(long long n){
long long i,e,sediv=1,aux;
for(i=1;i<=num;i++){
aux=n;
e=0;
while(aux>=baz[i]){
e+=aux/baz[i];
aux/=baz[i];
}
if(e<exp[i]) sediv=0;
}
return sediv;
}
long long caut(){
int i=0, pas=1<<31;
while(pas!=0){
if(verif(i+pas)==0) i+=pas;
pas>>=1;
}
return 1+i;
}
int main(){
long long i;
in>>p>>q;
desc(p);
for(i=1;i<=num;i++) exp[i]*=q;
out<<caut();
return 0;
}