HDU 2176 取 m堆 石子遊戲 尼姆博弈)

2021-07-01 19:33:23 字數 348 閱讀 7151

思路:

對於一組數,必勝態肯定是所有數異或後不為0

必敗態的話異或之後為0;

必勝態可以轉換成必敗態。

即從a[i]中選擇乙個數是他變成其他所有a[i]數的異或和。這樣最終異或值為0,使得對手陷入必敗態。

相關知識可以檢視

#include #include #include #include using namespace std;

int a[220000];

int main()

{ int m;

while(~scanf("%d",&m),m)

{int ans=0;

for(int i=0;i

HDU 2176 取 m堆 石子遊戲

尼姆博弈。講解 有三堆各若干個物品,兩個人輪流從某一堆取任意多的物品,規定每次至少取乙個,多者不限,最後取光者得勝。這種情況最有意思,它與二進位制有密切關係,我們用 a,b,c 表示某種局勢,首先 0,0,0 顯然是奇異局勢,無論誰面對奇異局勢,都必然失敗。第二種奇異局勢是 0,n,n 只要與對手拿...

HDU 2176 取 m堆 石子遊戲

hdu 2176 取 m堆 石子遊戲 problem description m堆石子,兩人輪流取.只能在1堆中取.取完者勝.先取者負輸出no.先取者勝輸出yes,然後輸出怎樣取子.例如5堆 5,7,8,9,10先取者勝,先取者第1次取時可以從有8個的那一堆取走7個剩下1個,也可以從有9個的中那一堆...

HDU2176取 m堆 石子遊戲

hdu2176取 m堆 石子遊戲 problem description m堆石子,兩人輪流取.只能在1堆中取.取完者勝.先取者負輸出no.先取者勝輸出yes,然後輸出怎樣取子.例如5堆 5,7,8,9,10先取者勝,先取者第1次取時可以從有8個的那一堆取走7個剩下1個,也可以從有9個的中那一堆取走...