SG 分石子遊戲

2021-06-22 02:38:59 字數 990 閱讀 4850

時間限制:

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

樣例輸入

2

1 35

2 35 6

樣例輸出

win

lose

計算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...