acgo题库
  • 首页
  • 题库
  • 学习
  • 竞赛
  • 讨论
  • 排行
  • 团队
  • 备赛专区

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
登录
注册
题目详情提交记录(0)
  • 简单

    #include <iostream> using namespace std; // 前 10 个质数,因为 2 * 3 * 5 * 7 * 11 * 13 * 17 * 19 * 23 * 29 > 2 * 10^9 const int primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29}; long long n; long long ans = 0, max_cnt = 0; // 深度优先搜索函数 // u 表示当前枚举到第几个质数 // last 表示上一个质数的指数 // prod 表示当前的乘积 // cnt 表示当前数的约数个数 void dfs(int u, int last, long long prod, long long cnt) { // 如果约数个数更多或者约数个数相同但当前数更小,则更新答案 if (cnt > max_cnt || (cnt == max_cnt && prod < ans)) { max_cnt = cnt; ans = prod; } // 枚举当前质数的指数 for (int i = 1; i <= last; i++) { if (prod * primes[u] > n) break; prod *= primes[u]; dfs(u + 1, i, prod, cnt * (i + 1)); } } int main() { cin >> n; // 从第一个质数开始搜索,初始指数上限为 30,初始乘积为 1,初始约数个数为 1 dfs(0, 30, 1, 1); cout << ans << endl; return 0; }

    userId_undefined

    复仇者_龘

    7月全勤卷王出道萌新荣耀黄金
    9阅读
    0回复
    1点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页