题意:给定初值
d
d
d ,以及数组,对于数组的每个数,要么加法要么异或,问
d
d
d能否变成给定的数
y
y
y,如果能则Alice赢否则Bob赢
分析: 加法和异或运算在二进制下对于数字最后一位效果是一样的,因此对于一种给定的操作方法,最后的结果不随加法次数或异或次数多少改变而改变,因此操作后奇偶性是确定的,如果能与y奇偶性相同则A赢,否则B赢
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 7;
int a[N];
void solve()
{
int n , s , t;
cin >> n >> s >> t;
for (int i = 1; i <= n; ++ i)
{
cin >> a[i];
s += a[i];
}
if (s % 2 == t % 2) cout << "Alice" << endl;
else cout << "Bob" << endl;
}
signed main()
{
int T;
cin >> T;
while(T --)
{
solve();
}
return 0;
}