题目链接
题目描述
计算 a+b
,但是这次需要处理多组测试数据。
输入描述:
- 输入的第一行是一个整数
t
(1 ≤ t ≤ 10),表示接下来有t
组数据。 - 随后的
t
行,每行包含两个整数a
和b
。
输出描述:
对于每一组输入的 a
和 b
,都在单独的一行中输出它们的和。
解题思路
本题的核心是学会处理"多组测试数据"的输入模式,这是算法竞赛中的标准形式。解题逻辑如下:
- 读取组数
t
:首先,从输入的第一行读取一个整数t
,这个数字告诉我们总共需要执行多少次计算。 - 设置循环:使用一个循环(
for
循环或while
循环)来重复执行t
次相同的操作。 - 循环体内的操作:在每一次循环中,都执行以下三个步骤:
a. 读取当前行的一对整数
a
和b
。 b. 计算它们的和。 c. 将和输出,并换行。 - 循环结束:当循环执行完
t
次后,程序就处理完了所有的测试数据,可以正常结束。
数据类型注意:输入的 a
和 b
最大可达 10^9,它们的和最大可达 2 * 10^9,这个结果在标准的32位整型(int
)范围内。为保险起见,使用64位整型(long long
或 long
)是一个好习惯。
代码
#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
的大小无关。