给定 𝑛 堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。
问如果两人都采用最优策略,先手是否必胜。
第一行包含整数 𝑛。
第二行包含 𝑛 个数字,其中第 𝑖 个数字表示第 𝑖 堆石子的数量。
如果先手方必胜,则输出 Yes。
否则,输出 No。
1≤n≤
,
1≤每堆石子数≤
- 2
- 2 3
Yes
代码:
- #include
- using namespace std;
-
- const int N = 100010;
- int n,p[N];
-
- int main(){
- cin>>n;
- for(int i = 0;i < n;i ++){
- cin>>p[i];
- }
- int res = 0;
- for(int i = 0;i < n;i ++){
- res ^= p[i];
- }
- if(res == 0){
- cout<<"No";
- }else{
- cout<<"Yes";
- }
- return 0;
- }