题解
【入门】四位数的和
1 条题解
-
0
解题思路
题目要求一个四位整数的各位数字之和。比如 3456,就是 3+4+5+6 = 18。
怎么把每一位取出来? 关键用两个操作:
n % 10:得到 n 的最低位(个位)。例:3456 % 10 = 6n / 10:去掉最低位。例:3456 / 10 = 345
于是可以从低位到高位一位一位拆:
- 用
n % 10取出当前最低位,加到总和 sum 上; - 用
n / 10去掉这一位; - 重复上面两步,直到 n 变成 0。
对 3456 来说,依次取出的是 6、5、4、3,虽然顺序和"千位、百位、十位、个位"相反,但加法顺序不影响结果,加起来一样是 18。
参考代码
#include <iostream> // 用于 cin/cout 输入输出 using namespace std; int main() { int n; // 四位整数 cin >> n; int sum = 0; // 记录各个位的和 // 从最低位开始,一位一位取出并累加 while (n > 0) { sum += n % 10; // 取出当前最低位,加到总和上 n /= 10; // 去掉最低位,继续看下一位 } cout << sum; // 输出各位数字之和 return 0; }复杂度分析
- 时间复杂度:O(1)——四位整数最多循环 4 次,循环次数固定
- 空间复杂度:O(1)——只用了一个变量 sum
- 1