ACM模式输入输出2

在使用 ACM 模式(即 ACM International Collegiate Programming Contest 模式)编写代码时,需要自己处理输入输出,不能依赖本地调试时的简化方式。下面是 Python3 在 ACM 模式中常见的输入输出写法,适用于在线判题系统(如牛客网、LeetCode(部分)、Codeforces 等)。


✅ 基本原则

  • 读取输入必须使用 input()
  • 多组输入时,要根据题目要求循环读取
  • 输出使用 print()
  • 不要输出任何多余内容(如提示语 "请输入..."

📌 常见输入场景及写法

1. 单行输入:一个整数或多个整数

# 输入一个整数
n = int(input())

# 输入一行多个整数,空格分隔
a, b = map(int, input().split())
arr = list(map(int, input().split()))

2. 多行输入:每行一个值或多个值

# 先输入行数 n,再输入 n 行数据
n = int(input())
for _ in range(n):
    x = int(input())  # 或者
    a, b = map(int, input().split())

3. 多组输入(直到 EOF 结束)——常见于 ACM 题目

import sys

# 方法一:使用 try-except 捕获 EOF
while True:
    try:
        a, b = map(int, input().split())
        # 处理逻辑
        print(a + b)
    except EOFError:
        break

# 方法二:读取所有行(适合批量处理)
for line in sys.stdin:
    a, b = map(int, line.split())
    print(a + b)

⚠️ 注意:sys.stdin 方式在某些 OJ 上更稳定,尤其是输入量大时。

4. 输入二维数组 / 矩阵

n, m = map(int, input().split())  # n 行 m 列
matrix = []
for _ in range(n):
    row = list(map(int, input().split()))
    matrix.append(row)

5. 输入字符串

s = input().strip()
# 多个字符串
words = input().split()

🧩 典型模板(ACM 模式通用)

import sys

def main():
    # 可根据题目选择是否循环
    while True:
        try:
            # 读取输入
            line = input().strip()
            if not line:
                break
            a, b = map(int, line.split())
            
            # 处理逻辑
            result = a + b
            
            # 输出结果
            print(result)
        except EOFError:
            break

if __name__ == '__main__':
    main()

🧪 示例:A+B Problem(ACM 模式)

题目描述
输入多组 a 和 b,每行两个整数,输出 a+b,直到文件结束。

import sys

for line in sys.stdin:
    a, b = map(int, line.split())
    print(a + b)

或者:

while True:
    try:
        a, b = map(int, input().split())
        print(a + b)
    except EOFError:
        break

✅ 小贴士

  • 使用 strip() 可以去除首尾空白字符
  • input() 默认读取一整行
  • 大量输入时,sys.stdininput()
  • 输出后是否需要 flush 一般不需要(OJ 会自动处理)

如果你有具体的题目类型(如树、图、字符串处理等),我可以给出对应的 ACM 输入模板。欢迎继续提问!

posted @ 2025-08-24 21:04  leo21sun  阅读(42)  评论(0)    收藏  举报