top1编程
← 返回题目
题解

数字的真面目

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    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