太开心了,这是我第一道自己想出来的利用二进制的做法把博弈做出来的,good!!!
题意:一般的博弈,给你n堆,一次只能取一堆中的任意个,求先手若想获胜有多少可行的第一步
分析:当所有堆的异或值为0的话,则必败,所以现在要做的就是如何让对手面对的局势是异或值为0
转换为2进制,5,7,9只能够变9才能是所有的数的异或为0
5 101 101 变010
7 111 1101 或他变1010
9 ^ 1001 变成0010 111 或他变001
1000
依次类推:全部转换为二进制,从最高一位开始比较,若到达每一二进制位的异或不为0,该位含有几个1,就表示可以变化几次