https://www.51nod.com/Challenge/Problem.html#!#problemId=1060
输出小于等于n的拥有最多约数个数中最小的那个数。
存个模板
int big, prime[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};
ll ans, x;
void dfs(ll cur, int i, int limit, int num)
{
if (num > big || (num == big && cur < ans)){
ans = cur;
big = num;
}
ll t = 1;
for (int j = 1; j <= limit; ++j){
t *= prime[i];
if (x / t >= cur){
dfs(cur * t, i + 1, j, num * (j + 1));
}else return ;
}
return ;
}
dfs(1, 0, 64, 1);