NC237119. Be the Winner
描述
输入描述
第一行一个整数 (),表示 堆苹果。
第二行 个整数 (),表示第 堆苹果有 个。
输出描述
如果有必胜策略,输出"Yes",否则输出"No"。
示例1
输入:
2 2 2
输出:
No
示例2
输入:
1 3
输出:
Yes
C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 500K, 提交时间: 2022-08-24 16:37:24
#include <bits/stdc++.h> #define rep(i, a, b) for(int i = (a); i < (b); i++) #define _for(i, a, b) for(int i = (a); i <= (b); i++) using namespace std; int main() { int n, cur = 0, flag = 1; scanf("%d", &n); _for(i, 1, n) { int x; scanf("%d", &x); if(x > 1) flag = 0; cur ^= x; } if(flag) puts((n % 2 == 0) ? "Yes" : "No"); else puts(cur ? "Yes" : "No"); return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 2ms, 内存消耗: 480K, 提交时间: 2022-07-28 23:28:16
#include <bits/stdc++.h> using namespace std; int n; int a[105]; int main(){ cin>>n; int flag=0,ans=0; for(int i=0;i<n;i++){ cin>>a[i]; ans^=a[i]; if(a[i]>1)flag=1; } if((flag==0&&ans==0)||(flag==1&&ans>0))cout<<"Yes\n"; else cout<<"No\n"; return 0; }