{a1,a2,a3,a4.......an}n推石头,A先拿,若a1^a2^a3^a4^.....^an==0,B胜
证明:因为异或后的数代表所有石头数在二进制表示后,对应位上有偶数个还是奇数个1;
比如5(d)=101(b) ,7(d)=111(b), 7^5=010(b) ,第一个0代表7和5在这位上有偶数个0;
所以如果异或后为0,则A进行操作后,异或不为0,B必能使异或重新变为0;最后只能B取到0(也就是拿光);
#include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; typedef long long LL; #define eps 1e-8 int main() { int n,k; cin>>n; int j=0; for(int i=0;i<n;i++){ cin>>k; j^=k; } if(!j)cout<<"B"; else cout<<"A"; return 0; }