HOJ生病惹QQ,因此在此悼念昔日光彩
題目備份,請參考~
題解在這裡
敬告:目前HOJ主機也許進入瀕死狀態了,常常無預警跳電。請看到這則公告的人能注意備份自己的資料,感謝。
至於主機壞掉以後會如何目前並沒有任何規劃..
至於主機壞掉以後會如何目前並沒有任何規劃..
Submit Ranklist
Problem : 257 - [Interactive]Bidding
Problem Statistics
Solved Member: 13 Submission: 121 User Tried: 13
Problem:
請在程式碼加入#include "interactive/257.h"回答問題。
Alois 和 Byteasar 正在玩一個投標遊戲,他們試著用石頭來競標。這兩個玩家可以依序動作, Alois 最先,接著換 Byteasar 然後再換 Alois ,以此類推。每一次動作可以影響到 pot 或 stack 兩個地方的石頭數量。剛開始 pot 裡有一顆石頭,stack裡面沒有石頭。每個玩家可以做以下三種動作:
• 將 pot 裡的石頭變成兩倍
• 將 pot 裡的石頭變成三倍
• 略過
當一個玩家略過此步驟,目前在 pot 裡的石頭都會移到stack中 (這是使 stack 石頭數量增加的唯一方法),並且 pot 中的石頭數量恢復為 1。若某個人使得 stack 中的石頭數目大於等於 就是輸家。另外若輪到某人時石頭總數大於等於 則該次移動只能pass,必定輸。
Alois 常常輸給Byteasar 寫的程式,因此他決定請你來幫忙寫個程式擊敗 Byteasar。
Alois 和 Byteasar 正在玩一個投標遊戲,他們試著用石頭來競標。這兩個玩家可以依序動作, Alois 最先,接著換 Byteasar 然後再換 Alois ,以此類推。每一次動作可以影響到 pot 或 stack 兩個地方的石頭數量。剛開始 pot 裡有一顆石頭,stack裡面沒有石頭。每個玩家可以做以下三種動作:
• 將 pot 裡的石頭變成兩倍
• 將 pot 裡的石頭變成三倍
• 略過
當一個玩家略過此步驟,目前在 pot 裡的石頭都會移到stack中 (這是使 stack 石頭數量增加的唯一方法),並且 pot 中的石頭數量恢復為 1。若某個人使得 stack 中的石頭數目大於等於 就是輸家。另外若輪到某人時石頭總數大於等於 則該次移動只能pass,必定輸。
Alois 常常輸給Byteasar 寫的程式,因此他決定請你來幫忙寫個程式擊敗 Byteasar。
Task:
函式庫中將提供以下的函式
• Init – 回傳數字 n。你必須要在程式一開始呼叫這個函式。
o C/C++: int Init();
• Alois – 回傳你要做的動作 x,若 x=1 代表略過,x=2 代表將 pot 石頭變成兩倍, x=3 代表將石頭數變成三倍。
o C/C++: void Alois(int x);
• Byteasar – 回傳一個數字,代表電腦所做的動作。 x=1 代表略過, x=2 為將 pot 石頭變成兩倍, x=3 代表變成3倍。
o C/C++: int Byteasar();
在呼叫 Init 程式以後,你必須輪流呼叫 Alois 以及 Byteasar 函式。當有任何一個人輸的時候將自動結束程式。注意禁止使用標準輸入以及輸出。
在所有的測試資料中都保證有必勝的方案。若你的程式贏得勝利,才會得到該題的分數。
在所有的測試資料中滿足,1 ≤ n ≤ 30000。並且至少 50% 的測是資料滿足 n ≤ 50。
• Init – 回傳數字 n。你必須要在程式一開始呼叫這個函式。
o C/C++: int Init();
• Alois – 回傳你要做的動作 x,若 x=1 代表略過,x=2 代表將 pot 石頭變成兩倍, x=3 代表將石頭數變成三倍。
o C/C++: void Alois(int x);
• Byteasar – 回傳一個數字,代表電腦所做的動作。 x=1 代表略過, x=2 為將 pot 石頭變成兩倍, x=3 代表變成3倍。
o C/C++: int Byteasar();
在呼叫 Init 程式以後,你必須輪流呼叫 Alois 以及 Byteasar 函式。當有任何一個人輸的時候將自動結束程式。注意禁止使用標準輸入以及輸出。
在所有的測試資料中都保證有必勝的方案。若你的程式贏得勝利,才會得到該題的分數。
在所有的測試資料中滿足,1 ≤ n ≤ 30000。並且至少 50% 的測是資料滿足 n ≤ 50。
Input:
No Input.
Output:
No Output.
HINT:
範例:
上述的範例中每個步驟是對的,但是你輸了,因此不會得到任何分數。
當 n=15 的時候Alois 有方法可以贏過 Byteasar。
C/C++ | 回傳值 | stack | pot | 解釋 |
---|---|---|---|---|
n = Init(); | 15 | 0 | 1 | n=15 |
Alois(2); | - | 0 | 2 | 你將Pot * 2 |
Byteasar(); | 2 | 0 | 4 | 程式將 pot 變成2倍 |
Alois(3); | - | 0 | 12 | 你將 pot 變成 3 倍 |
Byteasar(); | 1 | 12 | 1 | 程式將 12 個石頭移到stack,pot只剩1顆石頭 |
Alois(2); | - | 12 | 2 | 你將 pot * 2 |
Byteasar(); | 3 | 12 | 6 | 程式將 pot 變成3倍 |
Alois(1); | - | 18 | 1 | Pot以及stack的石頭總數超過 15。你將pot的石頭移到stack |
上述的範例中每個步驟是對的,但是你輸了,因此不會得到任何分數。
當 n=15 的時候Alois 有方法可以贏過 Byteasar。
Source:
POI 19 Stage 3
Problem Setter
hanhan0912
Testdata:
Test | Time | Memory | Score |
---|---|---|---|
0 | 1000ms | 131072kb | |
1-ocen | 1000ms | 131072kb | |
1 | 3000ms | 131072kb | 5 |
2-ocen | 1000ms | 131072kb | |
2 | 3000ms | 131072kb | 5 |
3-ocen | 5000ms | 131072kb | |
3 | 3000ms | 131072kb | 5 |
4 | 3000ms | 131072kb | 5 |
5 | 3000ms | 131072kb | 5 |
6 | 3000ms | 131072kb | 5 |
7 | 3000ms | 131072kb | 5 |
8 | 3000ms | 131072kb | 5 |
9 | 3000ms | 131072kb | 5 |
10 | 3000ms | 131072kb | 5 |
11 | 3000ms | 131072kb | 5 |
12 | 3000ms | 131072kb | 5 |
13 | 3000ms | 131072kb | 5 |
14 | 3000ms | 131072kb | 5 |
15 | 3000ms | 131072kb | 5 |
16 | 3000ms | 131072kb | 5 |
17 | 3000ms | 131072kb | 5 |
18 | 3000ms | 131072kb | 5 |
19 | 3000ms | 131072kb | 5 |
20 | 3000ms | 131072kb | 5 |
HSNU Online Judge System
推薦瀏覽環境: Firefox 4
頁面讀取時間: 0.2652 秒,使用記憶體: 2.87MB 。
推薦瀏覽環境: Firefox 4
頁面讀取時間: 0.2652 秒,使用記憶體: 2.87MB 。
沒有留言:
張貼留言
歡迎留言或問問題~
若您的留言中包含程式碼,請參考這篇
如果留言不見了請別慌,那是因為被google誤判成垃圾留言,小莫會盡快將其手動還原
注意:只有此網誌的成員可以留言。