top1编程
← 返回题目
题解

数位相加

1 条题解

  • 0
    @ 2026-8-4 1:58:27

    解题思路

    输入一个两位数,把十位和个位分离出来,相加输出。例如输入 45,十位是 4、个位是 5,输出 4+5=9。

    分离两位数有两个公式:

    • 十位 = n / 10:整数除以 10,商把个位去掉,剩下的就是十位;
    • 个位 = n % 10:对 10 取余,余数就是被去掉的那个个位。

    比如 n=45:45/10=4(十位),45%10=5(个位),和是 4+5=9。

    为什么这套方法对“两位数”一定成立?因为任意两位数都能写成 十位×10 + 个位 的形式。除以 10 时,十位×10 这部分正好被整除,商就是十位;取余 10 时,剩下的一定是小于 10 的个位。两个运算符配合,就能把一个数字“拆”成每一位。

    题目保证输入范围是 10 到 99,所以不会出现一位数或三位数,直接用公式即可,不需要额外判断。这题和“数位分离”那题几乎一样,多练一次就能把这个套路记牢。

    参考代码

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;          // n:输入的两位数
        cin >> n;       // 读入两位数
        int shi, ge;    // shi:十位数字,ge:个位数字
        shi = n / 10;   // 除以10,得到十位
        ge = n % 10;    // 对10取余,得到个位
        cout << shi + ge << endl;   // 输出十位与个位的和
        return 0;
    }
    

    复杂度分析

    程序只做一次读入、两次运算和一次加法,运算次数固定,与 n 的数值大小无关。所以时间复杂度是 O(1),空间复杂度也是 O(1)。

    如果 n 的位数变成 k 位,拆每一位要做 k 次整除加取余,复杂度就是 O(k);本题固定两位数,因此是 O(1)。

    • 1