题解
数字的真面目
1 条题解
-
0
P4236 数字的真面目(入门)
解题思路
三位数 756 是由"7 个一百、5 个十、6 个一"组成的,题目要我们把它还原成 700+50+6 的样子,也就是把每一位的数字和它所在的位值(百位乘 100、十位乘 10、个位乘 1)重新组合。
拆位方法(以 756 为例):
- 百位 b = 756 / 100 = 7。
- 十位 s = 756 / 10 % 10:先除以 10 变成 75(去掉个位),再取余 75 % 10 = 5。
- 个位 g = 756 % 10 = 6。
输出时,百位写成 b×100 = 700,十位写成 s×10 = 50,个位就是 g = 6,中间用加号连接:700+50+6。
注意两个细节:
- 样例里数字和加号之间没有空格,所以按 "700+50+6" 的形式输出,不要多打空格。
- 题目保证是三位数(100~999),就算某一位是 0(比如 100),也会输出 100+0+0,符合题意。
参考代码
// 用途:把三位整数拆成每一位的位值,按"百+十+个"的形式输出 #include <iostream> using namespace std; int main() { int n; cin >> n; int b = n / 100; // 百位数字 int s = n / 10 % 10; // 十位数字 int g = n % 10; // 个位数字 cout << b * 100 << "+" << s * 10 << "+" << g << endl; return 0; }复杂度分析
只做了固定几次除法和取余,然后输出一行,时间复杂度 O(1),额外空间 O(1)。n 的范围是 100~999,每一位数字最多 9,乘上位值后最大 900,都在 int 范围内,绝对不会溢出。
- 1