Pagini recente » Cod sursa (job #1303830) | Cod sursa (job #1444542) | Cod sursa (job #1924046) | Cod sursa (job #535060) | Cod sursa (job #2206114)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int a,b;
unsigned long long mini;
int put(unsigned long long x,int y)
{
int nr=0,t=y;
while(x>=t)
{
nr+=x/t;
t=t*y;
}
return nr;
}
int main()
{
int i,d,p,c,v,e,f;
unsigned long long t,maxi=0;
unsigned long long st,dr,m;
fin>>a>>b;
c=a;
d=2;
while(c!=1)
{
p=0;
t=1;
while(c%d==0)
{
c=c/d;
p++;
t=t*d;
}
if(p>0)
{
if(t>maxi)
{
maxi=t;
v=d;
e=p;
}
}
if(d*d<c)
d++;
else
d=c;
}
st=1;
dr=1;
e=e*b;
for(i=1;i<=b;i++)
dr=dr*maxi;
mini=dr;
while(st<=dr)
{
m=(st+dr)/2;
f=put(m,v);
if(f>=e)
{
if(m<mini)
mini=m;
dr=m-1;
}
else
st=m+1;
}
fout<<mini;
return 0;
}