Pagini recente » Cod sursa (job #614281) | Cod sursa (job #3260075) | Cod sursa (job #2963274) | Cod sursa (job #410603) | Cod sursa (job #2454753)
#include <fstream>
using namespace std;
ifstream cin("gfact.in");
ofstream cout("gfact.out");
int baz[101];
long long exp[101];
int main()
{
int p,q,i,put,stop,nr=0;
long long dr,st,mijl,rez,nrr;
cin>>p>>q;
for(i=2;i*i<=p;i++)
{
if(p%i==0)
{
put=0;
while(p%i==0)
{
put++;
p/=i;
}
nr++;
baz[nr]=i;
exp[nr]=put*q;
}
}
if(p)
{
nr++;
baz[nr]=p;
exp[nr]=q;
}
st=1;
dr=1000000000000;
while(st<=dr)
{
mijl=(st+dr)/2;
stop=1;
for(i=1;i<=nr && stop;i++)
{
put=baz[i];
nrr=0;
while(put<=mijl && nrr<=exp[i]){
nrr+=mijl/put;
put*=baz[i];
}
if(nrr<exp[i])
stop=0;
}
if(stop==0)
st=mijl+1;
else
{
rez=mijl;
dr=mijl-1;
}
}
cout<<rez;
return 0;
}