Pagini recente » Cod sursa (job #851467) | Cod sursa (job #2217145) | Cod sursa (job #534630) | Cod sursa (job #660612) | Cod sursa (job #2795512)
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
long long p,q,m,i,j,k,u,mij,sol,x,y,a[1005],b[1005],d,n;
int pow(long long a,long long b)
{
long long x=b,y=0;
while (x<=a)
{
y=y+a/x;
x=x*b;
}
return y;
}
int main()
{
fin >>n>>q;
if (n==1) fout <<1;
else
{
k=0;d=2;
while (d*d<=n)
{
p=0;
while (n%d==0)
{
p++;
n=n/d;
}
if (p>0) {k++;b[k]=d;a[k]=p;}
d++;
}
if (n>1) {k++;a[k]=n;b[k]=1;}
for (i=1;i<=k;i++)
{
x=b[i];
y=q*a[i];
p=1;
u=9999999999;
sol=0;
while (p<=u)
{
mij=(p+u)/2;
if (pow(mij,x)>=y)
{
sol=mij;
u=mij-1;
}
else
{
p=mij+1;
}
}
if (sol>m) m=sol;
}
fout <<m;
}
return 0;
}