時間限制:
2000 ms | 記憶體限制:
65535 kb
難度:6 描述
閒來無事,zyc發明了一種遊戲,叫分石子遊戲,初始有d堆石子,每堆石子的數量已知。
兩個人輪流分石子,可以選取這d堆石子中的任意一堆,然後把選中的這堆石子分成m堆(每堆石子數量都必須大於0),現在石子的堆數將變成d+m-1堆,對方就可以在這d+m-1堆石子中任意選一堆分成m堆,依次分下去,直到某人無法執行這種操作時則無法執行操作的人輸掉了這場遊戲。
如果玩遊戲的雙方都非常聰明,現在給你乙個初始狀態,請你判斷先分石子的人是會取勝還是會失敗。
輸入
第一行是乙個整數t,表示測試資料的組數(t<=10)
每組測試資料的第一行是兩個整數d,m(0
輸出如果先分石子的人獲勝則輸出win
否則輸出lose
樣例輸入
21 35
2 35 6
樣例輸出
winlose
計算sg函式,找規律:
#include #include using namespace std;
#define maxn 100
int a[maxn];
int vis[maxn];
int sg[maxn];
int ed[maxn];
int mm;
int fun(int n,int m,int minn,int rt)
vis[temp]=1;
}else if(m*minn <=n)
}int main()
for(int i=0;i
化簡**:
#include using namespace std;
int main()
puts(sum ? "win" : "lose");
}}
石子遊戲 SG函式
problem description alice 和 bob 總喜歡聚在一起玩遊戲 t t 今天他 她 們玩的是一款新型的取石子遊戲。遊戲一開始有n堆石子,alice 和 bob 輪流取出石子。在每次操作中,遊戲者必須選擇其中的一堆石子,並作出下列的其中一種操作 1 移去整堆石子 2 假設石子堆中...
取石子遊戲與SG函式
題目 題意 有3堆石子,石子數量分別為a,b,c,有兩個玩家,每次只能從任意一堆中取f個,這裡的f只能為fibnacci數,問是先手 勝 還是先手敗.分析 由於石子的數量都在1000以內,那麼我們可以先預處理出1000以內的sg函式值,然後對於3堆石子,我們進行異或,如果為 0說明先手必敗,否則必勝...
取石子(sg函式)
alice和bob有n桶石子,裡面有ai個,他們每次只能其中一某堆裡取奇數個,不能拿的人輸,alice總是先拿 1 n 200,1 ai 1e9 input 第一行為 n 第二行為 n個數 ai output 最後獲勝的人alice或bob sample input 33 2 1 sample ou...