有一個簡單的接數字遊戲,由一個闊為 W單位, 高為 2W單位的場地組成。
場地的最上方有隨機出現的數字不斷由上而下垂直落下。
而玩家 (下圖用 M 表示) 則在場地的最下方的一行上,他只可以在場地左右移動而不能上下走動。 如下圖所示。
+-----------+
| 6 |
| 0 |
| 2 |
| |
...
| |
| |
|M |
+-----------+
這是一款很舊的遊戲,畫面每個時間單位更新一次。
每次更新時,所有角色 (包括數字及玩家在內) 都同時更新,
且每次更新各個角色都只可以移動最多一個單位的位置。
其中,玩家的移動方法是他每次可以向左或向右移動 1 個單位或停留在原地不動。
玩家的活動範圍不可以超出場地範圍。
玩家的初始位置是在場地的最左邊。
所有出現了的數字會同時垂直落下一行。新的數字又會在此刻在最頂的一行內隨機出現。
在某一個時間單位內,若玩家和數字同時出現在同一個座標位置上,則我們說這個數字被玩家收集了。
當一個數字落到最底一行時,下一次更新時它就會消失。
遊戲中總共會出現 T 個數字。
你在玩這個遊戲時,發現數字的出現實際上是由一個亂碼產生器所控制的,
而且你知道這個生成器內所有的方程及常數,換言之你是知道你是事先知道所有數字出現的位置及順序。在這條件下,求根據遊戲中玩家活動的限制,他最高可以收集到幾多分?
亂碼新城起的運作如下
- R(n) = (a × R(n-1) + d) % M
- R(0) = S
- N(n) = (R(n) >> 1) % 10
- P(n) = R(n) % W
其中, N(n) 在 n 時膐刻出的數字, P(n) 是該數字出現的水平位置,
初始的時刻為 0。其它均為給定的常數。