1 条题解
-
0
我看了你的代码,这是第22题 不重复三位奇数计数的代码,里面有3个致命错误,导致结果完全不对,我直接帮你修好并解释清楚。
你的代码错误点
- 内层循环 j 写成了 i++(死循环)
- 百位、十位、个位搞反了
- 没有判断三个数字不重复
修复后的正确代码
#include <bits/stdc++.h> using namespace std; int main() { int cnt = 0; // 百位 i:1~9,不能为0 for (int i = 1; i <= 9; i++) { // 十位 j:0~9 for (int j = 0; j <= 9; j++) { // 个位 k:必须是奇数 1,3,5,7,9 for (int k = 1; k <= 9; k += 2) { // 三个数字不能重复 if (i != j && i != k && j != k) { cnt++; } } } } cout << cnt << endl; return 0; }代码逻辑说明
- 百位 i:1~9(不能是0)
- 十位 j:0~9
- 个位 k:1、3、5、7、9(保证是奇数)
- 必须满足:
i != j && i != k && j != k(三个数字不重复) - 满足条件就计数 +1
运行结果
320和题目要求的样例输出完全一致。
总结
- 你原来的代码j循环写成i++,会直接卡死;
- 百位十位搞反、没判重,导致答案错误;
- 修复后逻辑清晰,直接输出正确答案 320。
信息
- ID
- 4634
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 8
- 已通过
- 3
- 上传者
粤公网安备44195502000195号