【範例】ZeroJudge e283: APCS 類似題 – 小崴的特殊編碼
- 本題以 EOF 結束
- 每行測資以 換行符號 (\n) 結束
目錄
【方法1】try – except (TLE)
letter = {"0 1 0 1": "A",
"0 1 1 1": "B",
"0 0 1 0": "C",
"1 1 0 1": "D",
"1 0 0 0": "E",
"1 1 0 0": "F"}
while True:
try:
n = int(input())
for _ in range(n):
print(letter[input()], end='')
print()
except:
break
【方法2】sys.stdin.readline() + replace() 取出換行符號 (1.4ms)
import sys
letter = {"0 1 0 1": "A",
"0 1 1 1": "B",
"0 0 1 0": "C",
"1 1 0 1": "D",
"1 0 0 0": "E",
"1 1 0 0": "F"}
for i in sys.stdin:
n = int(i)
ans = ""
for i in range(n):
s = sys.stdin.readline()
s = s.replace("\r", "").replace("\n", "")
ans += letter[s]
print (ans)
【方法3】sys.stdin.readline() + strip() 取出換行符號 (1ms)
import sys
letter = {"0 1 0 1": "A",
"0 1 1 1": "B",
"0 0 1 0": "C",
"1 1 0 1": "D",
"1 0 0 0": "E",
"1 1 0 0": "F"}
for i in sys.stdin:
n = int(i)
ans = ""
for i in range(n):
s = sys.stdin.readline().strip()
ans += letter[s]
print (ans)
【方法4】sys.stdin.readlines( ) 一次讀入所有測資
- 當測資不是以 EOF 結束時,可以改用 readlines( ) 一次讀入所有資料,傳給list。會比 readline( ) 搭配迴圈一行一行讀入更快。
- 【範例】ZeroJudge e826: 1. 粉絲見面會 (Fans)
import sys
lines = sys.stdin.readlines()
N, M = map(int, lines[0].split())
gift = [[i, 0] for i in range(N)]
for i in range(1, M+1):
n, X = map(int, lines[i].split())
gift[n][1] += X
gift.sort(key=lambda x:(-x[1], x[0]))
for n, X in gift:
print(n, X)