Pagini recente » Cod sursa (job #2055535) | Cod sursa (job #2281016) | Cod sursa (job #2298399) | Cod sursa (job #46719) | Cod sursa (job #2794190)
#include <iostream>
#include <fstream>
using namespace std;
long long p,q;
long long legendre(long long n)
{
long long val=p,nr=0,minn=60000000000000;
for(int i=2; i*i<=val; i++)
{
long long exp=0,val2=n;
if(val%i==0)
{
nr=0;
while(val%i==0)
{
val/=i;
exp++;
}
while(val2>=i)
{
val2/=i;
nr+=val2;
}
nr/=exp;
if(nr<minn)
minn=nr;
}
}
if(val>1)
{
nr=0;
long long val2=n;
while(val2>=val)
{
val2/=val;
nr+=val2;
}
if(nr<minn)
minn=nr;
}
return minn;
}
long long cautbin()
{
long long p=1,u=60000000000000,sol=0;
while(p<=u)
{
long long m=(p+u)/2;
if(legendre(m)<q)
p=m+1;
else
{
u=m-1;
sol=m;
}
}
return sol;
}
int main()
{
ifstream cin("gfact.in");
ofstream cout("gfact.out");
cin>>p>>q;
cout<<cautbin();
return 0;
}