代码:
# xilzy's solution
def get_bit(num):
n=0
while(num>=1): #循环右移运算,从低到高取出每一位
bit=num & 1 #取出最右边一位
bits[n]+=bit
num>>=1 #右移一位
n+=1
N=int(input())
for i in range(N): #进行N轮博弈
temp=[int(i) for i in input().split()]
n=temp[0] #总个数
nums=temp[1:]
bits=[0 for i in range(20)] #测试用例中Xi最大不超过2的20次方,所以只需要20位即可,bits[0]是2的零次方的个数,从小到大存的
flag=0 #判断这一组数据全部异或是否为0
for num in nums:
get_bit(num)
flag^=num
if(flag==0):
print(0) #平局
continue #开始下一局
else:
for i in range(20): #遍历位数组判断最高位1的情况
if(bits[19-i]==1): #如果最高位1只有一个,那么先手必胜
print(1)
break
if(bits[19-i]%2==1 and (n-bits[19-i])%2==0): #最高位1为奇数个,且最高位0为偶数个,则先手必胜
print(1)
break
if(bits[19-i]%2==1 and (n-bits[19-i])%2==1): ##最高位1为奇数个,且最高位0也为奇数个,则先手必败
print(-1)
break