题意:给出n,输出最小的有n个因子的数。
思路:深搜答案,2^64就超过1018了,每个数枚举64次即可。
# include <iostream> # define ULL unsigned long long using namespace std; int n, p[16] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53}; ULL ans; void dfs(int depth, ULL tmp, int num) { if(num > n || depth >= 16) return; if(num == n && tmp < ans) ans = tmp; for(int i=1; i<=64; ++i) { if(ans < tmp) break; dfs(depth+1, tmp *= p[depth], num*(i+1)); } } int main() { while(cin >> n) { ans = ~0ULL; dfs(0, 1, 1); cout << ans << endl; } return 0; }