蓝桥题库每日一练 · 2026.10.08
10月8日 用户输入一个正整数 N(3≤N≤9)。从 0 到…
用户输入一个正整数 N(3≤N≤9)。从 0 到 N 的所有整数(包含 0 和 N)中选出三个不同的数字,组成一个三位数,要求:0 不能作为百位,并且这个三位数是奇数(每个数位上的数字都不能重复)。请计算满足条件的三位数一共有多少个。例如 N=3 时,用 0、1、2、3 这四个数字能组成的符合要求的三位数有 103、123、203、213、201、231、301、321,共 8 个,所以输出 8。输入:一个正整数 N(3≤N≤9);输出:满足条件的三位数的个数。
样例
输入 3输出 8评分标准
- 6 分:能正确通过一组测试用例
- 6 分:能正确通过两组测试用例
- 8 分:能正确通过三组测试用例
参考解法
先把题目在问什么说清楚:手里有 0、1、2……N 这些数字卡片,每次挑三张不同的排成一个三位数,有两条规矩——百位不能是 0(不然就成两位数了),而且整个数要是奇数。问一共能排出多少个。
怎么看一个数是不是奇数?只看个位就够了:个位是 1、3、5、7、9,它就是奇数,前面几位是多少都不影响。所以「奇数」这条规矩,其实只管个位。
N 最多才 9,数量不大,最稳的办法就是「枚举」——把每一种可能都试一遍,符合的就数一个。用三层循环,一层管一个数位:
· 百位 a:从 1 试到 N(直接跳过 0);
· 十位 b:从 0 试到 N;
· 个位 c:只试奇数 1、3、5……(c 每次加 2,偶数压根不试)。
三层套在一起,所有「百位不是 0、个位是奇数」的三位数就都摸了一遍。最后再查一句「三个数字互不相同」:a != b && a != c && b != c(!= 是「不等于」,&& 是「并且」),满足就让计数器 cnt 加 1。cin 负责把 N 读进来,cout 负责把答案打出去。
#include <bits/stdc++.h>
using namespace std;
int main(){
int n; cin >> n;
int cnt = 0;
for(int a = 1; a <= n; a++) // 百位:1~n(不能是 0)……此答案或解析由 AI 生成,请谨慎使用。
难度依赛考组别及等考级别粗略评估,仅供参考。