一、
有任意堆物品,每堆物品的个数是任意的,双方轮流从中取物品,每一次只能从一堆物品中取部分或全部物品,最少取一件,取到最后一件物品的人获胜。
二、结论:
把每堆物品数全部异或起来,如果得到的值为0,那么先手必败,否则先手必胜(此时异或值为不为0的数)
三、CODE
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <sstream>
#include <cstdio>
#include <vector>
#include <string>
#include <cmath>
#include <stack>
#include <queue>
#include <map>
#include <deque>
#include <set>
#define INF 0x3f3f3f3f
#define memset(a,b) memset(a,b,sizeof(a))
#define mod 1e6+7;
using namespace std;
typedef long long LL;
const double PI = acos(-1);
const int M=1e5+7;
int main()
{
int n;
cin >> n;
LL sum = 0,a;
while(n--)
{
cin >> a;
sum ^= a;
}
if(sum != 0)
cout << 'A' << endl;
else
cout << 'B' << endl;
}