Pagini recente » Cod sursa (job #980759) | Cod sursa (job #2623127) | Cod sursa (job #759478) | Cod sursa (job #2507234) | Cod sursa (job #2206113)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("gfact.in");
ofstream fout("gfact.out");
int a,b;
unsigned long long mini;
int put(int 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,ok=0;
unsigned long long t,maxi=0;
unsigned long long st,dr,m,j;
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;
e=e*b;
dr=e;
while(st<=dr)
{
m=(st+dr)/2;
j=1;
for(i=1;i<=m;i++)
j=j*v;
f=put(j,v);
if(f>=e)
{ if(ok==0)
{mini=j;
ok=1;
}
else
if(j<mini)
mini=j;
dr=m-1;
}
else
st=m+1;
}
fout<<mini;
return 0;
}