var n:int64;
a:array[1..10]of longint=(2,3,5,7,11,13,17,19,23,29);
ans,max:int64;
function cal(n,p:longint):int64;
var i:longint;
begin
if p=0 then exit(1) else exit(n);
end;
procedure dfs(now,num:int64;kth:longint;var max,ans:int64);
var i:longint;
s:int64;
begin
if kth=11 then
begin
if num=max then
if ans>now then
ans:=now;
if num>max then
begin
ans:=now;
max:=num;
end;
exit;
end;
i:=0;
s:=now;
while (s*cal(a[kth],i)<=n) do
begin
s:=s*cal(a[kth],i);
dfs(s,num*(i+1),kth+1,max,ans);
inc(i);
end;
end;
procedure init;
begin
read(n);
max:=0;
dfs(1,1,1,max,ans);
write(ans);
end;
begin
init;
end.
评论