题解
数位相加
1 条题解
-
0
解题思路
输入一个两位数,把十位和个位分离出来,相加输出。例如输入 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