[10月考试] B
[10月考试] B
题目描述
给定 111 个三位正整数 xxx,求 xxx 的各位数是否全都不相等。
如果全都不相等,输出 Yes
;否则,输出 No
。
对于所有数据,100≤x≤999100\leq x\leq 999100≤x≤999。
输入格式
输入共 111 行 111 个正整数 xxx。
输出格式
输出共 111 行 111 个字符串,表示答案。
样例 #1
样例输入 #1
704
样例输出 #1
Yes
样例 #2
样例输入 #2
477
样例输出 #2
No
提示
对于所有数据,100≤x≤999100\leq x\leq 999100≤x≤999。
思路
-
数字分解:
- 给定一个三位数
x
,我们可以通过取余和整除的操作,将其分解为百位、十位和个位数。 - 例如,
704
的百位是7
,十位是0
,个位是4
。
- 给定一个三位数
-
判断是否相同:
- 如果三位数的百位、十位和个位数字不相同,则输出
"Yes"
。 - 如果三位数的百位、十位和个位数字有相同的,则输出
"No"
。
- 如果三位数的百位、十位和个位数字不相同,则输出
-
步骤:
-
通过对 10 取余获得个位数,
x / 10 % 10
可以得到十位数,x / 100
可以得到百位数。 -
比较这三位数是否相等。
-
解题步骤
- 获取三位数的各位数:
- 百位数:
x / 100
- 十位数:
(x / 10) % 10
- 个位数:
x % 10
- 百位数:
- 判断是否相等:
- 如果三个数字全都不相等,则输出
"Yes"
。 - 如果有相等的数字,则输出
"No"
。
- 如果三个数字全都不相等,则输出
#include <iostream>
using namespace std;int main() {int x;cin >> x;int a = x / 100; // 百位int b = (x / 10) % 10; // 十位int c = x % 10; // 个位if (a != b && a != c && b != c) {cout << "Yes" << endl;} else {cout << "No" << endl;}return 0;
}
代码解析
- 输入读取:
- 读取整数
x
,即三位数。
- 读取整数
- 数字分解:
- 使用
x / 100
获取百位数。 - 使用
(x / 10) % 10
获取十位数。 - 使用
x % 10
获取个位数。
- 使用
- 判断:
- 使用
if (a != b && a != c && b != c)
判断三个数字是否不相等。如果都不相等,则输出"Yes"
,否则输出"No"
。
- 使用
时间复杂度
- 这道题的时间复杂度是
O(1)
,因为只涉及基本的数学运算和条件判断,不依赖于输入的大小。