文章目录
- 思路
- 结论
- 代码
题目链接
思路
大家可以去哔哩哔哩·看董晓算法讲的
结论
1.Nim 游戏
当堆数的异或和等于零时,则必败 a1 ^a2 ^a3 ^a4… ^an=0
当堆数的异或和不等于零时,则必胜 a1 ^a2 ^a3 ^a4… ^an!=0
2.台阶型Nim游戏
有n个台阶,第i个台阶有ai个石子,每次都可以将一些k级台阶石子移到下一台阶,移动到地面(0阶)就不能再移动了
当奇数台阶a1 ^a3 ^a5…!=0时则先手必胜,反之则必败
代码
#include <iostream>
#include <algorithm>
using namespace std;
int t, n, a, sum;int main() {cin >> t;while (t--) {sum=0;cin >> n;for (int i = 1; i <= n; i++) {cin >> a;sum ^= a;}if (sum == 0)cout << "No" << endl;elsecout << "Yes" << endl;}return 0;
}