Pagini recente » Cod sursa (job #609129) | Cod sursa (job #1386071) | Borderou de evaluare (job #1128889) | Cod sursa (job #2195941) | Cod sursa (job #3283826)
#include <fstream>
#define NMAX 6e13
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int p,q,d,v[11],exp[11],ndiv;
long long nrap(long long n,int p)
{
long long nr=0;
while(n>=p)
{
nr+=(n/=p);
}
return nr;
}
int este_bun_b(long long 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;
}
long long st=1,dr=NMAX,rez=NMAX+1;
while(st<=dr)
{
long long m=(st+dr)/2;
if(este_bun_b(m)==0)
st=m+1;
else
{
rez=m;
dr=m-1;
}
}
fout<<rez;
return 0;
}