Pagini recente » Cod sursa (job #1132109) | Cod sursa (job #2523667) | Cod sursa (job #2083292) | Cod sursa (job #1858227) | Cod sursa (job #1301961)
#include <fstream>
#define DIM 2000000000
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int p,q,i,j,st,dr,mid,nr,minim=DIM;
int 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(){
fin>>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;
}
fout<<minim;
fin.close();fout.close();
return 0;
}