很多大厂笔试和面试采用ACM模式,但是平常刷题都在leetcode,ACM接触较少,写输入输出就需要好长一段时间,这里总结一些常见形式。
1. A+B问题I
题目描述
你的任务是计算a+b。
输入描述
输入包含一系列的a和b对,通过空格隔开。一对a和b占一行。
输出描述
对于输入的每对a和b,你需要依次输出a、b的和。
如对于输入中的第二对a和b,在输出中它们的和应该也在第二行。
输入示例
3 4
11 40
输出示例
7
51
import sys
for line in sys.stdin:
a,b=line.split(' ')
print(int(a)+int(b))
2. A+B问题II
题目描述
计算a+b,但输入方式有所改变。
输入描述
第一行是一个整数N,表示后面会有N行a和b,通过空格隔开。
输出描述
对于输入的每对a和b,你需要在相应的行输出a、b的和。
如第二对a和b,对应的和也输出在第二行。
输入示例
2
2 4
9 21
输出示例
6
30
提示信息
注意,测试数据不仅仅一组。也就是说,会持续输入N以及后面的a和b
while True:
try:
n = int(input())
for i in range(n):
# 拆分读取和转换,方便单独处理每行的格式错误
line = input().strip()
a, b = map(int, line.split())
print(a + b)
except EOFError:
break
except ValueError:
# 遇到非数字输入时,跳过当前行,继续处理后续数据
print("输入格式错误,跳过当前行")
continue
3. A+B问题III
题目描述
你的任务依然是计算a+b。
输入描述
输入中每行是一对a和b。其中会有一对是0和0标志着输入结束,且这一对不要计算。
输出描述
对于输入的每对a和b,你需要在相应的行输出a、b的和。
如第二对a和b,他们的和也输出在第二行。
输入示例
2 4
11 19
0 0
输出示例
6
30
while True:
try:
# 读取输入并清理首尾空白,修正变量名拼写
user_in = input().strip()
# 分割并转换为整数
a, b = map(int, user_in.split())
# 终止条件:输入0 0时退出整个循环
if a == 0 and b == 0:
break
# 正常计算并输出和
print(a + b)
# 精准捕获输入结束异常(比如终端按Ctrl+D)
except EOFError:
break
# 捕获输入格式错误(比如非数字、个数不对)
except ValueError:
print("输入格式错误,请输入两个整数(用空格分隔)")
continue
通用模式
import sys
from typing import List
data = sys.stdin.read().strip().split()
if not data:
return
idx = 0 # 全局指针
# ... 根据题目格式读取数据 ...
# 最后输出:sys.stdout.write(str(ans))
n = int(data[idx])
idx += 1
arr = list(map(int, data[idx:idx+n]))
idx += n
Comments NOTHING