1. 小崴的特殊編碼 && stdin教學
    1. 小崴的特殊編碼
      1. 題目
      2. 解法
    2. stdin
      1. 甚麼時候用
      2. 怎麼用

小崴的特殊編碼 && stdin教學

小崴的特殊編碼 && stdin教學

APCS歷屆

小崴的特殊編碼

題目

url
這是APCS歷屆的題目,看起來算簡單,判斷二進為然後A-F就好了,但慢慢判斷可能會有超時問題。

解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#用stdin
from sys import stdin
def test(): #去做判斷 return english
#two = [[0, 1, 0, 1], [0, 1, 1, 1], [0, 0, 1, 0], [1, 1, 0, 1], [1, 0, 0, 0], [1, 1, 0, 0, ]]
#asc = ["A", "B", "C", "D", "E", "F"]
#dict1 = {(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"}
return dict1[fakelist]
'''for i in range(len(two)):
#print(i)
if two[i] == list1:
return asc[i]
break'''

#n = 1
#list1 = [0, 0, 1, 0]
#print(test())
#j = 0
#ans = ""
dict1 = {"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 stdin:
ans = ""
#if j != 0 :
# ans += "\n"
n = int(i)
for k in range(n):
fakelist = stdin.readline().rstrip()
ans += test()
print(ans)
#j += 1
#print(ans)

我嘗試了很多次不要TLE大家應該看的出來,然後我的想法就是列一個dict,這樣就可以直接去做搜尋,接著未來省時間我們就用了stdin,沒有用list(map(int, input().split()))。

stdin

甚麼時候用

看完上面你就知道是輸入的時候用,他相對input()快很多。

怎麼用

1
2
3
4
5
6
7
from sys import stdin
line = stdin.readline() #讀單行含換行
lines = stdin.readlines() #讀多行含換行
a, b, c = map(int, stdin.readline().split())#一次讀三個數
for n in stdin:
data=list(map(int, stdin.readline().split())) #可實作EOF
stdin.readline().rstrip()#不保留換行很好用