Mảng nums trên bảng. Ram và Sam luân phiên xóa 1 phần tử. Nếu sau khi xóa, XOR các phần tử còn lại = 0 thì người xóa thua. Nếu bắt đầu lượt với XOR = 0 thì người đó thắng. Xác định Ram có thắng không.
Quan sát quan trọng
- Nếu XOR tổng ban đầu = 0 → Ram thắng ngay.
- Nếu số phần tử chẵn → Ram luôn thắng (chiến lược đối xứng).
- Ngược lại Ram thua.
Chương trình C++
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
bool xorGame(vector<int>& nums) {
int n = nums.size();
int x = 0;
for(int v : nums) x ^= v;
return x == 0 || n % 2 == 0;
}
};
int main() {
Solution ob;
vector<int> v = {1,2,1};
cout << ob.xorGame(v); // 0 (false)
return 0;
}
Kết quả
0