通常的Nim遊戲的定義
有若干堆石子,每堆石子的數量都是有限的,合法的移動是“選擇一堆石子並拿走若干顆(不能不拿)”,如果輪到某個人時所有的石子堆都已經被拿空了,則判負(因爲他此刻沒有任何合法的移動)。
L.Bouton 提出瞭如下定理,從而徹底地解決了 Nim 問題:
異或和值爲零則後手勝,否則先手勝。
理解:首先可以將每個石子的個數分成多個2的指數倍的數之和,然後將這些數按位異或,結果爲0 ,就是必敗。
異或結果爲0即代表兩個數相等。
可以理解爲,後拿的人按照先拿的人的石子個數來拿(選擇好堆數保證最優解),最後後拿的人恰好拿完,所以先拿的人就敗。
基礎題:http://poj.org/problem?id=2234
題解:http://blog.csdn.net/nininicrystal/article/details/47416303
變形:http://acm.hdu.edu.cn/showproblem.php?pid=4315
題解:http://blog.csdn.net/nininicrystal/article/details/47606655