Pagini recente » Cod sursa (job #1967809) | Cod sursa (job #1142403) | Cod sursa (job #575125) | Cod sursa (job #262265) | Cod sursa (job #2795515)
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long p,q,m,x,y,l,u,sol,mij,a[1005],b[1005],d,k,i,n;
long long fact(long long a,long long b)
{
long long p=b,nr=0;
while (p<=a)
{
nr=nr+a/p;
p=p*b;
}
return nr;
}
int main()
{
fin >>n>>q;
if (n==1) fout <<1;
else
{
d=2;k=0;
while (d*d<=n)
{
while (n%d==0)
{
a[k+1]++;
n=n/d;
}
if (a[k+1]>0){k++;b[k]=d;}
d++;
}
if (n>1) {k++;b[k]=n;a[k]=1;}
for (i=1;i<=k;i++)
{
p=1;u=99999999999999;sol=0;
x=b[i];y=q*a[i];
while (p<=u)
{
mij=(p+u)/2;
if (fact(mij,x)>=y)
{
sol=mij;
u=mij-1;
}
else
{
p=mij+1;
}
}
if (sol>m) m=sol;
}
fout <<m;
}
return 0;
}