in:100000
out:90720
ans:83160
调了一天,调吐了QWQ
#include<iostream>
#define int long long
#define mp make_pair
using namespace std;
int prime[50]={0,2,3,5,7,9,11,13,17,19,23,29,31};
int n,ans=0;
pair<int,int> emirp;
void dfs(int now,int cnt,int num,int last){
if(cnt>emirp.second || (cnt==emirp.second && now<emirp.first)) emirp=mp(now,cnt);
if(num>=13) return;
for(int i=1;i<=last;++i){
if(now*prime[num]>n) return;
now=now*prime[num];
dfs(now,cnt*(i+1),num+1,i);
}
}
signed main(){
cin>>n;
dfs(1,1,1,30);
cout<<emirp.first<<' '<<emirp.second;
}