#P500. 【入门题】【输入篇①】A+B Problem

【入门题】【输入篇①】A+B Problem

题目描述:

给定两个整数 AB,请计算它们的和并输出结果。

输入:

输入包含一行,包含两个整数 AB,以空格分隔。

输出:

输出一行,包含一个整数,表示 AB 的和。

输入样例:

3 5

输出样例:

8

数据范围:

109A,B109-10^9 ≤ A, B ≤ 10^9

说明:

你需要读入两个整数 AB,计算它们的和并输出。

A+B Problem 教程

如果您只刷过LeetCode,那么在准备大厂机试的过程中会发现几乎所有大厂机试编程题都是ACM模式。而这篇题解就是教大家在ACM模式下正确写出一道A+B Problem。

ACM 模式通常要求选手更加精确地读写输入输出,特别是一次性读取所有输入并一次性输出结果。因此,在这篇教程中,我会向你讲解如何用几种常见的编程语言(C++/Java/Python/Go)编写一个简单的 A+B Problem,并详细解释代码中每个部分的作用。

1. C++ 实现

#include<bits/stdc++.h>
using namespace std;

int main() {
    int a, b;
    cin >> a >> b;  // 读入两个整数
    cout << a + b << endl;  // 输出它们的和
    return 0;
}

注意事项:

#include<bits/stdc++.h>:这是 C++ 中的万能头文件,包含了大多数常见的库。这在竞赛环境下非常常用,简化了包含多个库的麻烦。大部分机试评测平台都支持这个库,例如:牛客/赛码/华为iLearning自研平台

2. Java 实现

import java.util.*;  // 引入所有需要的类库

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);  // 初始化一个 Scanner 对象用于接收输入
        int a = sc.nextInt();  // 读取第一个整数
        int b = sc.nextInt();  // 读取第二个整数
        System.out.println(a + b);  // 输出 a 和 b 的和
    }
}

注意事项:

在 ACM 模式下,Java 类名必须为 Main。如果使用其他类名,系统可能会返回错误,无法通过编译。

3. Python 实现

a, b = map(int, input().split())  # 读取输入并将其转化为两个整数
print(a + b)  # 输出它们的和

注意事项:

  • 如果平台支持 PyPy3,尽量使用它,因为 PyPy 的运行速度比标准 Python 快很多。目前机试评测平台中只有牛客网支持该编译器,它对应的公司包括但不仅限于:字节跳动,阿里,百度,腾讯,米哈游,得物
  • 由于 Python 递归默认的栈深度有限,如果遇到递归问题,你可能需要手动增加栈深度。可以使用以下代码来增加递归深度:
    import sys
    sys.setrecursionlimit(2000000)  # 设定递归栈的深度
    

4. JavaScript(Node Js) 实现

process.stdin.resume();
process.stdin.setEncoding('utf-8');
let input = '';

process.stdin.on('data', (data) => {
    input += data;
});

process.stdin.on('end', () => {
    let arr = input.trim().split(' ');
    let a = Number(arr[0]);
    let b = Number(arr[1]);
    console.log(a + b);
});

代码详解:

  1. process.stdin.resume():启动标准输入流。
  2. process.stdin.setEncoding('utf-8');:设置输入的编码格式为 utf-8
  3. process.stdin.on('data', callback):接收输入数据并将其存储到 input 变量中。
  4. process.stdin.on('end', callback):当输入结束时,进行数据处理,分割输入并计算结果。
  5. input.trim().split(' '):移除首尾的空格并按空格分割输入字符串。
  6. Number():将字符串转为数字。

5. Go 实现

package main
import "fmt"

func main() {
    var a, b int  // 声明两个整数变量
    fmt.Scanln(&a, &b)  // 读取输入
    fmt.Println(a + b)  // 输出结果
}

代码详解:

  1. fmt.Scanln(&a, &b):从标准输入中读取两个整数并赋值给 ab
  2. fmt.Println():将结果输出到标准输出。

常见注意事项总结:

  1. 输入输出格式:ACM 模式下通常要求严格按照题目要求的格式进行输入输出,否则即使你的逻辑是正确的,系统也会判定为错误。例如,输出多余的空格、换行都可能导致错误。

  2. 类名和函数名:在某些平台(如 Java)中,类名必须是 Main,否则系统可能无法运行你的代码。

  3. 超时问题:竞赛平台通常会有严格的时间限制。如果发现代码运行时间过长,可以考虑:

    • 优化算法。
    • 对于 Python 选手,优先使用 PyPy3,因为它的速度比标准 Python 快。

希望这篇教程能帮助你从 LeetCode 切换到 ACM 模式,并轻松应对输入输出问题!