C++ 破解“好数字”个数难题:巧用奇偶位选择与快速幂算法
```cpp #include <iostream> using namespace std; const int MOD = 1e9 + 7; long long fast_pow(long long base, long long exp) { long long res = 1; while (exp > 0) { if (exp % 2 == 1) { res = (res * base) % MOD; } base = (base * base) % MOD; exp /= 2; } return res; } int countGoodNumbers(long long n) { long long even_pos = (n + 1) / 2; // 偶数位的个数 long long odd_pos = n / 2; // 奇数位的个数 long long even_choices = 5; // 偶数位可选数字:0,2,4,6,8 long long odd_choices = 4; // 奇数位可选数字:2,3,5,7 long long res = (fast_pow(even_choices, even_pos) * fast_pow(odd_choices, odd_pos)) % MOD; return res; } int main() { long long n; cin >> n; cout << countGoodNumbers(n) << endl; return 0; } ``` 代码解释: 1. 偶数位(下标0,2,4...)必须为偶数(0,2,4,6,8),共5种选择 2. 奇数位(下标1,3,5...)必须为质数(2,3,5,7),共4种选择 3. 总可能性数为5^even_pos * 4^odd_pos,其中even_pos和odd_pos分别表示偶数位和奇数位的数量 4. 使用快速幂算法计算大数幂次,避免超时 5. 结果对1e9+7取模 三条额外需要注意的逻辑点: - 偶数位和奇数位的数量计算需要考虑n的奇偶性 - 快速幂算法的时间复杂度是O(log n),适合处理大指数 - 模运算要在每次乘法后进行,防止中间结果溢出 ######[AI写代码神器 | 457点数解答 | 2025-07-21 17:46:17]
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)44
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)52
- 超详细:JDK安装及Windows系统环境变量设置全攻略 (阿里通义 | 376点数解答 | 2024-03-06 17:27:29)357
- Python:用正则表达式从含多种字符的字符串中提取英文、数字和中文单词(GPT | 522点数解答 | 2024-05-31 19:05:27)319
- Python:用正则表达式结合 split 思路提取一行字符串中的英文、数字和中文单词 (GPT | 399点数解答 | 2024-05-31 19:07:31)315
- 繁体字编码代码修改:人物名字合法性验证函数转简体版(字节豆包 | 325点数解答 | 2024-10-21 18:57:01)291
- 计算区间 n 到 m 中数字 x 出现次数的 Python 实现与详解(字节豆包 | 289点数解答 | 2025-12-07 17:14:59)79
- Python 实现:计算区间 n 到 m 中数字 x 出现的次数(字节豆包 | 322点数解答 | 2025-12-13 21:37:08)81
- 星际编码大赛终极对决:机械星AI与异星人激战“逆序对”统计难题(字节豆包 | 509点数解答 | 2025-04-19 17:33:00)281
- C++实现戴夫后院抵御僵尸的植物选择策略(DeepSeek | 773点数解答 | 2026-01-19 19:20:57)46
- 高效计算逆序对:归并排序分治法详解与Python实现(阿里通义 | 1144点数解答 | 2026-03-18 17:49:11)33
- 解决 P2216 第 x 个数问题的 C++ 代码实现(字节豆包 | 368点数解答 | 2026-03-27 21:15:43)18