题目链接
题目描述
给定一个四位正整数 n
(1000 ≤ n ≤ 9999),请计算该整数各个数位上数字的和。
输入描述:
在一行中输入一个四位正整数 n
。
输出描述:
输出一个整数,表示 n
的各位数字之和。
解题思路
本题要求计算一个四位数各位数字的和。主要有两种思路:
方法一:算术方法 (取余和整除)
这是处理数字问题的经典方法。通过模运算 (%
) 和整数除法 (/
) 可以逐个分离出数字的每一位。
- 个位:
n % 10
- 十位:
(n / 10) % 10
- 百位:
(n / 100) % 10
- 千位:
n / 1000
然后将这四个分离出来的数字相加即可。
方法二:字符串方法 这种方法更直观,特别是对于 Python 等语言。
- 将输入的数字作为字符串读取。
- 遍历字符串的每一个字符。
- 将每个字符转换回数字并累加。 这种方法的好处是代码简洁,并且很容易扩展到任意位数的整数。
代码
// 算术方法
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int sum = 0;
sum += n / 1000; // 千位
sum += (n / 100) % 10; // 百位
sum += (n / 10) % 10; // 十位
sum += n % 10; // 个位
cout << sum << endl;
return 0;
}
// 算术方法
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum = 0;
sum += n / 1000; // 千位
sum += (n / 100) % 10; // 百位
sum += (n / 10) % 10; // 十位
sum += n % 10; // 个位
System.out.println(sum);
}
}
# 字符串方法
s = input()
total_sum = 0
for digit_char in s:
total_sum += int(digit_char)
print(total_sum)
# 更简洁的 Pythonic 写法:
# print(sum(int(digit) for digit in input()))
算法及复杂度
- 算法:算术分解 / 字符串遍历。
- 时间复杂度:
- 因为操作的数字位数是固定的(4位)。
- 空间复杂度:
- 仅需常数空间存储变量。