切換
舊版
前往
大廳
主題

ZeroJudge - e997: 升旗典禮抽背課文 解題心得

Not In My Back Yard | 2020-06-01 00:29:26 | 巴幣 2 | 人氣 237

題目連結:


題目大意:
輸入第一列給定若干個字串(不超過 50 個),每個字串之間由一個空白隔開,代表班上同學的姓名。第二列給定一正整數 n ( n 不大於班級人數)。

求在第一列給定的同學順序之下,倒數第 n 位同學的姓名為何?



範例輸入:
範例輸入一:
John Steve Mary Jacob
1

範例輸入二:
Elmo Zoe Oscar Bert Ernie Grover
3


範例輸出:
範例輸出一:
Jacob

範例輸出二:
Bert


解題思維:
又是一個可以充分展現 Python 好用的地方之一。其預設的輸入函式 input() ,會讀到換行字元「\n」為止。很適合本題第一列的輸入。

而且字串型態有一個內建的函式 split(),其預設是按照空白將字串分成好幾個子字串作為元素去組成一個串列(List)。

再加上 Python 的串列存取可以倒著取,如 A[-1] ,代表取串列 A 的最後一個元素。

因此,綜合以上特性,使得本題使用 Python 可以寫成下列三句程式碼:
names = input().split()
pick = int(input())
print(names[-pick])

當然,要把上面硬寫成一列程式碼是可行的,但是可讀性不高。



至於 C++ ,在本題就要寫得較長,參見下面的鏈結。

此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作