传送门:一道神奇的博弈题
这是一道神奇的博弈题,题意是有n个数,然后A,和B轮流拿走其中的某个数,如果说最后A拿的数的和为偶数的话,就是A赢,否者就是B赢,然后发现奇数的个数和偶数的个数对结果会有影响,比如偶数的个数为偶数的话,结果是固定的,然后只需要推几个数据就可以推出来偶数个数为奇数时对答案的影响
题目:
ac代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 500 + 10;
typedef long long int LL;
LL a[N];
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
int j = 0, o = 0;
int x;
for (int i = 1; i <= n; i++)
{
cin >> x;
if (x % 2 == 0)
o++;
else
j++;
}
if (!j)
cout << "Alice" << endl;
else if (j == 1)
{
if (o % 2 == 0)
cout << "Bob" << endl;
else if (o % 2 == 1)
cout << "Alice" << endl;
}
else if (o % 2 == 0)
{
if (j % 2 == 0)
{
if (j / 2 % 2 == 0)
cout << "Alice" << endl;
else
cout << "Bob" << endl;
}
else if((j / 2 + 1)%2 == 0)cout <<"Alice"<<endl;
else cout <<"Bob"<<endl;
}
else if (o % 2 == 1)
{
if(j % 2 == 0)
{
if(j / 2 % 2== 0)cout <<"Alice"<<endl;
else cout <<"Bob"<<endl;
}
else cout <<"Alice"<<endl;
}
}
}