题意:给出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;
}
本文介绍了一个算法问题的解决方案,即找到具有给定数量因子的最小正整数。通过深度搜索的方法,利用不超过64次的枚举,确保答案不会超出10^18的限制。
403

被折叠的 条评论
为什么被折叠?



