Pagini recente » Cod sursa (job #3321780) | Cod sursa (job #1312911) | Cod sursa (job #2264516) | Cod sursa (job #1289490) | Cod sursa (job #3314897)
#include <iostream>
#include <fstream>
using namespace std;
int factG(int a, int b){
int s=0;
//cout<<1;
while(a>=b){
s+=a/b;
a/=b;
}
//cout<<1;
return s;
}
int f[33], p[33];
int main()
{
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int x, y, st, cx, dr, k, i, j, g;
fin>>x>>y;
cx=x;
i=2;
j=0;
while(cx>=i*i){
if(cx%i==0){
f[j]=i;
while(cx%i==0){
cx/=i;
p[j]++;
}
p[j]*=y;
j++;
}
i++;
}
if(cx>1){
f[j]=cx;
p[j++]=y;
}
st=0, dr=2030000000;
while(st+1<dr){
int mij=(st+dr)/2;
// cout<<st<<' '<<dr<<' ';
k=mij;
// cout<<mij<<' ';
i=0;
g=1;
while(i<j){
if(factG(k,f[i])<p[i]){
g=0;
//cout<<f[i];
break;
}
i++;
}
if(g==1){
dr=mij;
}
else{
st=mij;
}
//cout<<'\n';
}
fout<<dr;
return 0;
}