做法:
i).求出k=a1^a2^…^an,若k>0,则先取必胜,否则必败。
ii).若k=0,把其中一个ai变成ai^k,但ai^k要小于ai
证明:
i).数学归纳法
设当i=0…n时sg(i)=i成立
1.当n=0时sg(0)=0,成立
2.当i=n+1时,因为可以取小于n+1的任意多个火柴,所以后继状态是0..n,所以:sg(i)
=mem(sg(0),sg(1),…sg(n))
=mem(0,1,2,…,n)
=n+1 所以sg(i)=i
k=sg(a1)^sg(a2)^…^sg(an)
=a1^a2^…^an
命题得证
ii).因为先手是必胜态,所以要使对手是必败态,则改变了一个ai后k要变成0
因为k^k=0,所以a1^a2^…^an^k=0
所以a1^a2^…(ai^k)^ai+1^…^an=0
只要把一个ai变成ai^k即可,但因为必须要取,所以ai必须小于ai^k。
得证