两道简单的博弈题,关键是多写几组数据找规律,同时在验算时注意写的有根有据,推理清晰
第一题比较好的演算方式是列表格
写个n*n的表,然后往里填先手或是后手胜,每个格子的答案都可以根据左边格子内的情况推出
这样写了部分表后就可以看出规律是:
判断n+1是不是2的整数次幂。
那么这个判断一句话就可以完成了
n & n+1 == 0
第二题分堆数及每堆内1有多少个(这个想法很容易得出)来讨论
然后每次推下一堆就根据上一堆的情况来,多写两组也很容易发现了规律:
如果n是偶数且每堆都是1则后手胜,否则先手