Pagini recente » Cod sursa (job #1609631) | Cod sursa (job #2228543) | Cod sursa (job #1588081) | Cod sursa (job #1509733) | Cod sursa (job #948764)
Cod sursa(job #948764)
#include <fstream>
#include <iostream.h>
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;
}