前言
前天做最后一批华为软件机试时,因为完全不清楚这种所谓的ACM模式,刚看到的时候就傻眼了,即使已经看到了这种区别,但是也没有充分的提前准备好应对,因此光输入输出都卡了好久,最后也有自己的原因基本等于交了白卷。
看网上评论说大家都会有这个问题,因此也算是正常。自己也要从哪里跌倒就从哪里爬起来,把这个难点给克服了,不然以后遇到同样的机试还是干瞪眼。
学习的过程顺便留下记录,以便日后翻阅。
题目链接:OJ在线编程常见输入输出练习场
提交记录 :ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛
分别采用Python3.9和Java1.8来解决,前者因为确实代码简单易懂,后者只是因为近期刷题都是Java,刷完剑指offer后应对机试也考虑主要用python,能免掉很多问题。
Python代码部分参考了B站up主以鹅爱折腾 的 牛客网笔试不会数据导入??看这个视频就够了(1) ,感兴趣的同学也可以去学习。
目录
a+b的和
A. 多组空格分隔的两个正整数
输入描述:
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据包括多组。
输出描述:
输出a+b的结果
输入例子1:
1 5
10 20
输出例子1:
6
30
Python
while True:
try:
num = list(map(int,input().split(" ")))
print(sum(num))
except:
break
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
// 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a + b);
}
}
}
C++
#include <iostream>
using namespace std;
int main() {
int a, b;
while (cin >> a >> b) {
// 注意 while 处理多个 case
// 64 位输出请用 printf("%lld")
cout << a + b << endl;
}
}
B.第一行组数接空格分隔的两个正整数
输入描述:
输入第一行包括一个数据组数t(1 <= t <= 100)
接下来每行包括两个正整数a,b(1 <= a, b <= 10^9)
输出描述:
输出a+b的结果
输入例子1:
2
1 5
10 20
输出例子1:
6
30
Python
t = int(input())
for i in range(t):
num = list(map(int,input().split(" ")))
print(sum(num))
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int num = in.nextInt();
for(int i = 0; i < num; i++) {
// 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a + b);
}
}
}
C++
#include<iostream>
using namespace std;
int main() {
int a, b, c;
cin >> a;
while(cin >> b >> c) {
cout << b + c << endl;
}
}
C.空格分隔的两个正整数为0 0 结束
输入描述:
输入包括两个正整数a,b(1 <= a, b <= 10^9),输入数据有多组, 如果输入为0 0则结束输入
输出描述:
输出a+b的结果
输入例子1:
1 5
10 20
0 0
输出例子1:
6
30
Python
while True:
try:
num = list(map(int,input().split(" ")))
if num[0] == num[1] == 0:
break
print(sum(num))
except:
break
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
// 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
if(a ==0 && b == 0) break;
System.out.println(a + b);
}
}
}
C++
#include<iostream>
using namespace std;
int main() {
int a, b;
while(cin >> a >> b