Pagini recente » Cod sursa (job #1745303) | Cod sursa (job #1862303) | Cod sursa (job #1377570) | Cod sursa (job #2291106) | Cod sursa (job #1301986)
#include <fstream>
#define DIM 4000000002
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long p,q,i,j,st,dr,mid,nr;
long long a[100000],b[100000];
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)/2;
if(verif(mid)){
dr=mid-1;
}
else
st=mid+1;
}
fout<<st;
fin.close();fout.close();
return 0;
}