解决代码WA问题:修正相邻格子奇偶性计算逻辑
### 🐞代码问题分析 原代码在计算相邻格子奇偶性不同的情况数时存在逻辑错误。原代码简单地认为第二个格子及以后的格子都有 `m - (m / 2)` 种选择,这是不准确的。实际上,对于相邻格子奇偶性不同的情况,当第一个格子确定后,后续格子的选择取决于前一个格子的奇偶性。 ### 💡修正思路 可以分两种情况讨论: 1. 第一个格子填奇数,后续格子依次填偶数; 2. 第一个格子填偶数,后续格子依次填奇数。 分别计算这两种情况的方案数,然后将它们相加,得到相邻格子奇偶性不同的总方案数。 ### 📝修正后的代码 ```cpp #include <iostream> using namespace std; const int MOD = 100003; // 快速幂函数,用于计算 a^b % MOD long long quickPow(long long a, long long b) { long long res = 1; while (b > 0) { if (b & 1) { res = (res * a) % MOD; } a = (a * a) % MOD; b >>= 1; } return res; } int main() { int n, m; cin >> n >> m; // 总的填数情况数,每个格子有 m 种选择,共 n 个格子 long long total = quickPow(m, n); // 计算相邻格子奇偶性不同的情况数 long long odd = m / 2 + (m % 2); // 奇数的个数 long long even = m / 2; // 偶数的个数 // 分两种情况:第一个格子填奇数和第一个格子填偶数 long long oddEven1 = quickPow(odd, (n + 1) / 2) * quickPow(even, n / 2) % MOD; long long oddEven2 = quickPow(even, (n + 1) / 2) * quickPow(odd, n / 2) % MOD; long long oddEven = (oddEven1 + oddEven2) % MOD; // 存在相邻格子奇偶性相同的情况数 = 总的情况数 - 相邻格子奇偶性不同的情况数 long long ans = (total - oddEven + MOD) % MOD; cout << ans << endl; return 0; } ``` ### 🔍代码解释 1. **快速幂函数 `quickPow`**:用于计算 `a^b % MOD`,提高计算效率。 2. **总的填数情况数 `total`**:每个格子有 `m` 种选择,共 `n` 个格子,所以总的情况数为 `m^n`。 3. **相邻格子奇偶性不同的情况数 `oddEven`**: - 计算奇数的个数 `odd` 和偶数的个数 `even`。 - 分两种情况讨论:第一个格子填奇数和第一个格子填偶数,分别计算这两种情况的方案数 `oddEven1` 和 `oddEven2`。 - 将两种情况的方案数相加,得到相邻格子奇偶性不同的总方案数 `oddEven`。 4. **存在相邻格子奇偶性相同的情况数 `ans`**:用总的情况数减去相邻格子奇偶性不同的情况数,得到最终结果。 ######[AI问答 | 805点数解答 | 2026-05-16 20:06:30]
- C3期末:精准求解 3 - 20 范围内数列第 k 项值及注意要点(字节豆包 | 242点数解答 | 2025-06-15 11:26:19)167
- C++求解:查找3 - 20项数列第k项值及注意要点(字节豆包 | 325点数解答 | 2025-06-15 11:27:11)188
- 仅 22%通过率!判断 ac 字符串,Python 代码及边界处理揭秘(字节豆包 | 163点数解答 | 2024-12-13 21:40:55)150
- 仅22%通过率!C++判断ac字符串,这些异常情况你考虑到了吗?(字节豆包 | 279点数解答 | 2024-12-13 21:41:09)152
- 仅22%通过率!C++ 判断字符串是否为 ac 字符串,附代码与注意点(字节豆包 | 265点数解答 | 2024-12-13 21:41:48)116
- 2025年截止提交项目得零分!C语言五大错误深度剖析与解决方案 (字节豆包 | 857点数解答 | 2025-07-10 21:26:21)185
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)102
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)63
- 解决代码WA问题:修改整数溢出问题后的计算代码(字节豆包 | 749点数解答 | 2026-05-10 16:20:03)19
- 修正代码解决计算 f(l, r) 和出现的 WA 问题(字节豆包 | 806点数解答 | 2026-05-10 16:21:37)17
- 破解Jenkins构建Java项目“数据收集等待过长”难题的实用攻略( | 389点数解答 | 2024-01-18 09:27:30)345
- Jenkins 构建 Java 项目“数据收集等待过长”难题的 10 大解决策略(百度文心 | 551点数解答 | 2024-01-18 09:27:54)302