猜拳 (APCS 2020-01 初級)
1.0s 256M幼稚園的絲絲很喜歡跟哥哥玩猜拳,因為這是他少數有機會贏哥哥的遊戲。每天只要一回家,絲絲就要哥哥陪他猜拳。為了戰勝哥哥,絲絲每天在幼稚園時都會花好多時間研究出拳的策略,並將預計要出的拳寫在紙上。但是哥哥上了國中以後功課越來越多,沒有空先思考要出什麼拳,於是哥哥決定根據絲絲出的拳來決定該如何出拳。
每天哥哥只要決定第一輪要出的拳 \(F\),接下來他的猜拳策略如下:
- 如果絲絲連續兩輪出了一樣的拳,下一輪他就會出打敗絲絲前兩輪的拳。
- 否則,他下一輪會出跟絲絲前一輪一樣的拳。
出拳以 \(0\)、\(2\)、\(5\) 表示,分別代表石頭、剪刀、布。勝負規則為:石頭(\(0\))贏剪刀(\(2\))、剪刀(\(2\))贏布(\(5\))、布(\(5\))贏石頭(\(0\));兩人出一樣的拳則為平手。
請你寫一個程式模擬兩人的遊戲過程與結果。
輸入格式
第一行輸入哥哥第一輪要出的拳 \(F\)。
第二行輸入妹妹準備的數量 \(N\)。
第三行依序輸入妹妹準備出的拳 \(y_1, y_2, \ldots, y_N\),以空格隔開。
限制
- 所有的出拳皆為 \(0\)、\(2\)、\(5\)(\(0\) 為石頭、\(2\) 為剪刀、\(5\) 為布)
- \(1 \le N \le 10\)
輸出格式
輸出一行,依序輸出哥哥每一回合所猜的拳,以空格隔開,接著在冒號後輸出在第幾回合分出勝負:
- 若在第 \(k\) 輪時哥哥贏了,輸出
: Won at round k - 若在第 \(k\) 輪時哥哥輸了,輸出
: Lost at round k - 若比完 \(N\) 輪仍然平手,輸出
: Drew at round N
評分說明
每一筆測試資料的執行時間限制均為 \(1\) 秒,依正確通過的測試資料筆數給分。其中:
- 第 1 子題組(\(20\) 分):\(N = 1\)。
- 第 2 子題組(\(20\) 分):\(N = 2\),且 \(y_1 \ne y_2\)。
- 第 3 子題組(\(60\) 分):無額外限制。
範例輸入 1
0
4
2 5 0 2
範例輸出 1
0 : Won at round 1
範例輸入 2
2
2
2 0
範例輸出 2
2 2 : Lost at round 2
範例輸入 3
5
4
5 5 0 0
範例輸出 3
5 5 2 : Lost at round 3
範例輸入 4
5
6
5 5 2 2 0 0
範例輸出 4
5 5 2 2 0 0 : Drew at round 6
題目來源
APCS 2020 年 1 月實作題第 1 題。
登入後即可撰寫程式並提交評測。
登入