1 条题解
-
0
题解
问题分析
题目要求计算在 以内满足 的正整数 的数量,其中 定义为满足 且 的 的数量。
核心在于分析 的性质:
- 由中国剩余定理,若 的素因子分解为 ,则同余方程 的解的数量是各素数幂 上解的数量的乘积。
- 始终是解,但 仅计数 的解,因此 ( 为总解数,需减去 的情况)。
- 素数幂 上的解数:
- 若 或 或 且 ,解数为 (仅 )。
- 若 或 且 ,解数为 (含 和另外两个解)。
由此可得:,其中 是 的素因子分解中“解数为3的素数幂”的个数(即满足 或 且 的素数幂的个数)。若 不是 的幂,则答案为 。
算法步骤
-
判断 是否为 的幂:若不是,直接返回 ;若是,设 ,需统计 中恰好含 个“解数为3的素数幂”的数的数量。
-
素数计数准备:
- 用改进的筛法(类似 Meissel-Lehmer 算法)计算区间内素数总数()和 的素数数量,支持高效查询。
-
深度优先搜索(DFS)计数:
- 递归枚举 个“解数为3的素数幂”(彼此不同的素数),并统计剩余因子为“解数为1的素数幂”的组合数,确保乘积 。
- 累计所有符合条件的 的数量。
代码解析
- 素数计数模块(build 函数):预处理小范围()和大范围()的素数数量及 的素数数量,用于快速查询。
- DFS 模块(dfs 函数):递归枚举 个目标素数幂,结合素数计数结果计算符合条件的 的数量,处理素数幂的不同次幂情况。
- 主函数:判断 是否为 的幂,初始化参数后调用 DFS 统计答案。
复杂度分析
- 时间复杂度:依赖于素数计数的效率和 DFS 枚举的深度,对于 ,通过分块和优化筛法可将复杂度控制在 级别。
- 空间复杂度:,用于存储小范围素数计数结果和中间变量。
综上,该算法通过数论性质简化问题,结合高效素数计数和递归枚举,实现了对大规模数据的快速求解。
- 1
信息
- ID
- 4641
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者