这个题不用我多说,洛谷原题,改一下就好了,贴一个链接自己看吧。
我的blog
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#define ll long long
using namespace std;
ll prime[100]={0,2,3,5,7,11,13,17,19,23,29,31,37,41,43};//14
ll ans;
ll n;
ll f;
void dfs(int i,ll num,ll x,int lim){
if(i>14)return;
if(x>n)return;
if(num>f||(f==num&&x<ans)){
ans=x;
f=num;
}
for(int j=1;j<=lim;j++){
x*=prime[i];
if(x>n)break;
dfs(i+1,num*(ll)(j+1),x,j);
}
}
int main(){
freopen("divisors.in","r",stdin);
freopen("divisors.out","w",stdout);
scanf("%I64d",&n);
ans=0;
f=0;
dfs(1,1,1,54);
printf("%I64d",ans);
return 0;
}