A Plus B 的题解


记住只在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。
在解题之前提交题解的代码会导致封禁。

作者: admin

概述

本题要求依次计算 N 对整数的和。核心解法是逐行读取两个整数并输出它们的和,注意结果可能超出 32 位有符号整数范围。

分析
核心观察

两数之和可能超过 32 位整型范围(-2^{31} 到 2^{31}-1),因为输入绝对值小于 10^9,最大和为 2 \times 10^9 - 2,略小于 2^{31}(约 2.147 \times 10^9),但为了安全及避免中间溢出,应使用 64 位整数类型。

思路

直接对每对输入执行加法运算并输出。由于 N 最大为 100\,000,线性扫描即可。无需额外数据结构或复杂算法。

具体示例

样例输入为两行:

  • 1 1,和为 2
  • -1 0,和为 -1

输出依次为 2 和 -1。

算法步骤
  1. 读取整数 N。
  2. 循环 N 次,每次读取两个整数 a、b。
  3. 计算 a + b 并输出结果。
复杂度分析
  • 时间:O(N),每个输入处理常数时间。
  • 空间:O(1),仅使用若干变量。
实现注意事项
  • 使用 long long(C++)或 int(Python 自动支持大整数)避免溢出。
  • 输入输出量较大,建议使用快速 I/O(C++ 关闭同步流,Python 使用 sys.stdin.buffer)。
  • 每行输出一个结果,注意换行。
源代码
#include <iostream>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N;
    cin >> N;
    while (N--) {
        long long a, b;
        cin >> a >> b;
        cout << a + b << '\n';
    }
    return 0;
}
import sys

def main():
    data = sys.stdin.buffer.read().split()
    if not data:
        return
    N = int(data[0])
    out = []
    idx = 1
    for _ in range(N):
        a = int(data[idx]); b = int(data[idx + 1])
        idx += 2
        out.append(str(a + b))
    sys.stdout.write('\n'.join(out))

if __name__ == "__main__":
    main()

评论

目前没有评论。