【题目分析】
唯一分解定理逆用,枚举次数然后相乘。
【代码】
#include <cstdio>
#include <cmath>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int pri[11]={0,2,3,5,7,11,13,17,19,23,0};
long long best=0,n=0,ans=0;
inline void dfs (long long x,long long now,int mx,int k)
{
if (now>best||(now==best&&x<ans)) best=now,ans=x;
if (!pri[k]) return ;
int cnt=1;
for (x*=pri[k];x<=n&&cnt<=mx;cnt++,x*=pri[k])
dfs(x,now*(cnt+1),cnt,k+1);
}
int main()
{
scanf("%lld",&n);
dfs(1,1,1e8,1);
printf("%lld\n",ans);
}