这是ac代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
ll a[]={2,3,5,7,11,13,17,19,23};
ll cnt[12];
ll vt=-1,vts=2e9;
ll pw(ll c,ll b) {ll ans = 1;while(b){if(b&1){ans = ans*c;--b;}c = c*c;b >>= 1;}return ans;}
void dfs(ll ans,ll sum,ll u)
{
    if(u>8) return;
    for(ll i=1;i<=sum;i++)
    {
        if(ans*pw(a[u],i)<n)
        {
            cnt[u]=i;
            dfs(ans*pw(a[u],i),i,u+1);
            cnt[u]=0;
        }
        else            break;
    }
    ll vns=1;
    for(ll i=0;i<8;i++)
    {
        if(cnt[i]) vns*=(cnt[i]+1);
    }
    if(vns>vt||(vns==vt&&ans<vts)) {vt=vns;vts=ans;}
}

int main()
{
    cin>>n;
    dfs(1ll,31ll,0ll);//当前答案是多少?上一个选了多少?到了第几个数.
    cout<<vts<<endl;
    return 0;
}