C++ 结合快速幂求解长度为 n 的“好数字”字符串个数
```cpp #include <iostream> using namespace std; const int MOD = 1e9 + 7; // 快速幂计算 (a^b) % mod long long fastPow(long long a, long long b, long long mod) { long long res = 1; while (b > 0) { if (b & 1) { res = (res * a) % mod; } a = (a * a) % mod; b >>= 1; } return res; } int countGoodNumbers(long long n) { // 偶数位可选数字:0,2,4,6,8 → 5种 // 奇数位可选数字:2,3,5,7 → 4种 long long evenPos = (n + 1) / 2; // 偶数位数量(包括0) long long oddPos = n / 2; // 奇数位数量 long long ans = (fastPow(5, evenPos, MOD) * fastPow(4, oddPos, MOD)) % MOD; return ans; } int main() { long long n; cin >> n; cout << countGoodNumbers(n) << endl; return 0; } ``` 代码逻辑说明 1. 快速幂:`fastPow`函数用于高效计算大数幂次取模,避免直接计算导致溢出或性能问题。 2. 位数计算:长度为n的数字字符串中,偶数下标位数为`(n + 1) / 2`,奇数下标位数为`n / 2`。 3. 组合计算:偶数位有5种选择(0,2,4,6,8),奇数位有4种选择(2,3,5,7),总数为`5^evenPos * 4^oddPos`。 4. 取模处理:结果对`1e9+7`取模,避免数值过大。 额外注意点 - 快速幂的中间结果需及时取模,防止数值溢出。 - 奇数位和偶数位的数量计算需区分n的奇偶性。 - 最终结果相乘后需再次取模,确保符合题目要求。 ######[AI写代码神器 | 488点数解答 | 2025-07-21 17:50:31]
- C++ 求解:最少操作次数让字符串无子串 “friend” (字节豆包 | 153点数解答 | 2024-08-17 16:29:54)482
- C++ 求解:最少操作次数让字符串不再含 “friend” 子串!(讯飞星火 | 260点数解答 | 2024-08-17 16:30:49)471
- Python 巧解:最少操作次数让字符串告别“friend”子串(字节豆包 | 139点数解答 | 2024-08-18 13:04:14)406
- 3414 数字游戏:Python 求解 8 位 01 字符串中 1 的个数 (字节豆包 | 106点数解答 | 2024-10-27 14:23:27)432
- 巧用字符添加,计算字符串中“our”最大数量及开发注意要点(DeepSeek | 376点数解答 | 2025-10-30 19:20:06)81
- C 语言实现:处理字符串生成最多 “our” 串,附代码及关键开发注意点 (DeepSeek | 257点数解答 | 2025-10-30 19:20:36)111
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)44
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)52
- Python 正则表达式:从“文本+数字+顿号”字符串中精准提取内容(字节豆包 | 218点数解答 | 2024-11-07 12:17:47)224
- 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