#P500. 【入门题】【输入篇①】A+B Problem
-
ID: 1
Type: Default
1000ms
256MiB
Tried: 1170
Accepted: 618
Difficulty: 1
Uploaded By:
Hydro
Tags>入门教程
【入门题】【输入篇①】A+B Problem
题目描述:
给定两个整数 A
和 B
,请计算它们的和并输出结果。
输入:
输入包含一行,包含两个整数 A
和 B
,以空格分隔。
输出:
输出一行,包含一个整数,表示 A
和 B
的和。
输入样例:
3 5
输出样例:
8
数据范围:
−109≤A,B≤109
说明:
你需要读入两个整数 A
和 B
,计算它们的和并输出。
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);
});
代码详解:
process.stdin.resume()
:启动标准输入流。process.stdin.setEncoding('utf-8');
:设置输入的编码格式为utf-8
。process.stdin.on('data', callback)
:接收输入数据并将其存储到input
变量中。process.stdin.on('end', callback)
:当输入结束时,进行数据处理,分割输入并计算结果。input.trim().split(' ')
:移除首尾的空格并按空格分割输入字符串。Number()
:将字符串转为数字。
5. Go 实现
package main
import "fmt"
func main() {
var a, b int // 声明两个整数变量
fmt.Scanln(&a, &b) // 读取输入
fmt.Println(a + b) // 输出结果
}
代码详解:
fmt.Scanln(&a, &b)
:从标准输入中读取两个整数并赋值给a
和b
。fmt.Println()
:将结果输出到标准输出。
常见注意事项总结:
-
输入输出格式:ACM 模式下通常要求严格按照题目要求的格式进行输入输出,否则即使你的逻辑是正确的,系统也会判定为错误。例如,输出多余的空格、换行都可能导致错误。
-
类名和函数名:在某些平台(如 Java)中,类名必须是
Main
,否则系统可能无法运行你的代码。 -
超时问题:竞赛平台通常会有严格的时间限制。如果发现代码运行时间过长,可以考虑:
- 优化算法。
- 对于 Python 选手,优先使用
PyPy3
,因为它的速度比标准 Python 快。
希望这篇教程能帮助你从 LeetCode 切换到 ACM 模式,并轻松应对输入输出问题!