题目链接

多组输入a+b II

题目描述

计算 a+b,但是这次需要处理多组测试数据。

输入描述:

  • 输入的第一行是一个整数 t (1 ≤ t ≤ 10),表示接下来有 t 组数据。
  • 随后的 t 行,每行包含两个整数 ab

输出描述: 对于每一组输入的 ab,都在单独的一行中输出它们的和。

解题思路

本题的核心是学会处理"多组测试数据"的输入模式,这是算法竞赛中的标准形式。解题逻辑如下:

  1. 读取组数 t:首先,从输入的第一行读取一个整数 t,这个数字告诉我们总共需要执行多少次计算。
  2. 设置循环:使用一个循环(for 循环或 while 循环)来重复执行 t 次相同的操作。
  3. 循环体内的操作:在每一次循环中,都执行以下三个步骤: a. 读取当前行的一对整数 ab。 b. 计算它们的和。 c. 将和输出,并换行。
  4. 循环结束:当循环执行完 t 次后,程序就处理完了所有的测试数据,可以正常结束。

数据类型注意:输入的 ab 最大可达 10^9,它们的和最大可达 2 * 10^9,这个结果在标准的32位整型(int)范围内。为保险起见,使用64位整型(long longlong)是一个好习惯。

代码

#include <iostream>

using namespace std;

int main() {
    int t;
    // 首先读取测试数据的组数
    cin >> t;
    
    // 循环 t 次
    while (t--) {
        long long a, b;
        // 在循环内读取每组的 a 和 b
        cin >> a >> b;
        // 计算并输出和
        cout << a + b << endl;
    }
    
    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 首先读取测试数据的组数
        int t = sc.nextInt();
        
        // 循环 t 次
        for (int i = 0; i < t; i++) {
            long a = sc.nextLong();
            long b = sc.nextLong();
            // 计算并输出和
            System.out.println(a + b);
        }
    }
}
# 首先读取测试数据的组数
t = int(input())

# 循环 t 次
for _ in range(t):
    # 在循环内读取每组的 a 和 b
    a, b = map(int, input().split())
    # 计算并输出和
    print(a + b)

算法及复杂度

  • 算法:循环处理多组输入。
  • 时间复杂度: - 因为我们需要对 t 组数据分别进行一次常数时间的计算。
  • 空间复杂度: - 仅需常数空间存储变量,与 t 的大小无关。