L1-008 求整数段和(10分)[java][python]

3 阅读1分钟

题目描述

给定两个整数 A 和 B,输出从 A 到 B 的所有整数之和。

输入输出格式

输入:两个整数 A 和 B(-10000 <= A, B <= 10000)

输出

  • 从 A 到 B(包含 A 和 B)的所有整数
  • 最后一行输出这些整数的和

样例

输入

-1 10

输出

-1 -2 -3 -4 -5 -6 -7 -8 -9 -10
Sum = -55

解题思路

  1. 读取两个整数 A 和 B
  2. 确保 A <= B(如果 A > B,则交换)
  3. 遍历输出从 A 到 B 的所有整数
  4. 计算并输出总和

代码实现

Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();

        if (a > b) {
            int t = a;
            a = b;
            b = t;
        }

        int sum = 0;
        for (int i = a; i <= b; i++) {
            System.out.print(i);
            if (i < b) System.out.print(" ");
            sum += i;
        }
        System.out.println();
        System.out.println("Sum = " + sum);
    }
}

Python

a, b = map(int, input().split())
if a > b:
    a, b = b, a

nums = list(range(a, b + 1))
print(" ".join(map(str, nums)))
print(f"Sum = {sum(nums)}")

复杂度分析

  • 时间复杂度:O(|b-a|)
  • 空间复杂度:O(|b-a|)

总结

本题考察循环和累加。核心是处理 A > B 的情况,以及正确计算区间和。