题目链接

求四位数各个数位之和

题目描述

给定一个四位正整数 n (1000 ≤ n ≤ 9999),请计算该整数各个数位上数字的和。

输入描述: 在一行中输入一个四位正整数 n

输出描述: 输出一个整数,表示 n 的各位数字之和。

解题思路

本题要求计算一个四位数各位数字的和。主要有两种思路:

方法一:算术方法 (取余和整除) 这是处理数字问题的经典方法。通过模运算 (%) 和整数除法 (/) 可以逐个分离出数字的每一位。

  • 个位: n % 10
  • 十位: (n / 10) % 10
  • 百位: (n / 100) % 10
  • 千位: n / 1000 然后将这四个分离出来的数字相加即可。

方法二:字符串方法 这种方法更直观,特别是对于 Python 等语言。

  1. 将输入的数字作为字符串读取。
  2. 遍历字符串的每一个字符。
  3. 将每个字符转换回数字并累加。 这种方法的好处是代码简洁,并且很容易扩展到任意位数的整数。

代码

// 算术方法
#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位)。
  • 空间复杂度: - 仅需常数空间存储变量。