1 条题解
-
0
题解
问题分析
题目要求统计区间 中质乘数的数量。质乘数的定义是:该数各位数字的乘积为质数。
由于 和 的长度可达 位,无法直接枚举所有数字。
关键观察
-
质乘数的数字特征:
- 数字乘积为质数 ⇒ 乘积只能是 这四个质数之一
- 因此数字只能包含 和至多一个质数字()
-
数字组合规律:
- 质乘数 = 若干个 + 至多一个质数字
- 例如:, , 等
- 不能有多个非 数字(否则乘积为合数)
算法思路
容斥计数法:
- 按数字长度分层计数
- 对于每个长度 ,质乘数的数量 = (因为质数字有4种选择,可以放在任何位置)
- 用前缀和数组
sum[i]快速计算长度区间内的总数 - 使用
Get()函数处理边界情况,确保不重复不遗漏
核心函数说明
dy():检查 本身是否为质乘数check(p, s):检查从位置 开始是否全为 或更小Get(num, s):计算字符串 之前有多少个以 为质数字的质乘数
算法步骤
- 预处理前缀和数组
- 计算所有长度在 之间的质乘数总数
- 减去 之前的多计数部分
- 加上 本身如果是质乘数的情况
复杂度分析
- 时间复杂度:,其中 是数字的位数
- 空间复杂度:,存储前缀和数组
算法标签
- 组合数学
- 数位统计
- 字符串处理
- 容斥原理
- 大数处理
-
- 1
信息
- ID
- 3920
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者