leetcode-1922
题目
https://leetcode.cn/problems/count-good-numbers/description/?envType=daily-question&envId=2025-04-13
分析
- 统计 “好数字”的数量
- 一个数字字符串是 好数字 当它满足(下标从 0 开始)偶数 下标处的数字为 偶数 且 奇数 下标处的数字为 质数 (2,3,5 或 7)。
- 同时 可以有前导零
- 统计范围是 n位数 n最大为 1015
- 由题意可知,偶数位 可能选择为5,奇数位可能选择为4。
- 逐个遍历 乘5或4 即可(会超时)
- 考虑位运算
- 由题意可知 二进制下
- 1:5
- 10:20
- 100 : 400
- 1000 : 160000
- 可以得到每一个二进制位的值(60个值就可以覆盖1015,因为260>1015
- 遍历每个数字长度的二进制位,当数字长度当前位&1 == 1,乘当前二进制位的值即可
源代码
https://github.com/Norton-Lin/algorithm/blob/master/go/src/leetcode_1922/2025_04_13_1922.go