切換
舊版
前往
大廳
主題

ZeroJudge - e516: 10409 - Die Game 解題心得

Not In My Back Yard | 2019-11-08 23:05:13 | 巴幣 0 | 人氣 415

題目連結:


題目大意:
給定一正整數 n (n ≦ 1024,n = 0 時代表輸入結束),代表有接著有 n 列。每列給定一個指令,指令只會是「east」、「south」、「west」或「north」其中一個。

現在有一個骰子,分為北、東、南、西面以及頂面和底面這六個面。當遇到「east」指令代表往「東面」的方向轉,因此原本的頂面變成新的東面、原本的西面變成新的頂面、原本的東面變成新的底面、原本的底面變成新的西面;其他指令以此類推。

一開始骰子的頂面、北面、西面,依序的點數為 1 、 2 、 3 且這是一個典型的骰子,因此每個相對的面之點數總和必為 7 。

求經過這 n 個指令後,骰子頂面的點數為多少?



範例輸入:
1
north
3
north
east
south
0


範例輸出:
5
1


解題思維:
單純的模擬即可。

因為骰子有每個相對的面總何必為 7 的性質。因此不用六個面全部存著,只要存三面就好,及題目提及的頂面、北面以及西面。

接著就是直接模擬——例如碰到「east」的指令,先暫存原先頂面的值。然後把西面的值複製到頂面,再用 7 減去剛剛複製頂面的值(即底面)複製到西面上。即完成一次旋轉。剩下的指令也同理。

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

創作回應

相關創作

更多創作