Pagini recente » Cod sursa (job #1179686) | Cod sursa (job #1186764) | Cod sursa (job #1609426) | Cod sursa (job #1221428) | Cod sursa (job #3283812)
#include <fstream>
#define NMAX 2e9
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int p,q,d,v[11],exp[11],ndiv;
int nrap(int n,int p)
{
int nr=0;
while(n>=p)
{
nr+=(n/=p);
}
return nr;
}
int este_bun_b(int b)
{
for(int i=1;i<=ndiv;i++)
{
if(exp[i]*q>nrap(b,v[i]))
return 0;
}
return 1;
}
int main()
{
fin>>p>>q;
int d=2;
while(d*d<=p)
{
int e=0;
while(p%d==0)
{
e++;
p/=d;
}
if(e)
{
v[++ndiv]=d;
exp[ndiv]=e;
}
d++;
}
if(p>1)
{
v[++ndiv]=p;
exp[ndiv]=1;
}
int st=1,dr=NMAX,rez=NMAX+1;
while(st<=dr)
{
int m=1LL*(st+dr)/2;
int pp=este_bun_b(m);
if(pp==0)
st=m+1;
else
{
rez=m;
dr=m-1;
}
}
fout<<rez;
return 0;
}