Pagini recente » Cod sursa (job #1115589) | Cod sursa (job #1844403) | Cod sursa (job #2739987) | Cod sursa (job #1646443) | Cod sursa (job #2828445)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("gfact.in");
ofstream fout ("gfact.out");
long long p,x;
long long cond(long long n)
{
long long a,b,nrn=0,put=0,d,copie,calc=9223372036854775807;
a=p;
for(d=2;d*d<=a;d++)
{
put=0;
copie=n;
if(a%d==0)
{
nrn=0;
while(a%d==0)
{
a=a/d;
put++;
}
while(copie>=d)
{
copie=copie/d;
nrn=nrn+copie;
}
nrn=nrn/put;
if(nrn<calc)
calc=nrn;
}
}
if(a>=2)
{
nrn=0;
copie=n;
while(copie>=a)
{
copie=copie/a;
nrn=nrn+copie;
}
if(nrn<calc)
calc=nrn;
}
return calc;
}
long long cautbin()
{
long long st=1,dr=9223372036854775807;
long long mij,a,ind=0;
while(st<=dr)
{
mij=(st+dr)/2;
a=cond(mij);
if(a>=x)
{
ind=mij;
dr=mij-1;
}
else
st=mij+1;
}
return ind;
}
int main()
{
fin>>p>>x;
fout <<cautbin()<<"\n";
return 0;
}