一,题意:
有n堆石子,每堆有ai个石子,Alice与Bob两人轮流取石子,每次取石子要求从非空
堆中取走至少一颗石子,Alice为先手,取光所有石子的一方获胜,
二,解析:
该题为标准的Nim博弈,
必胜态(非奇异态):a1 ^ a2 ^ a3 …… ^an != 0;
必败态(奇异态): a1 ^ a2 ^ a3 …… ^an == 0;
三,代码:
#include <iostream>
#include <stdio.h>
using namespace std;
int N;
int a[1000];
int main()
{
while(scanf("%d",&N)!=EOF && N)
{
for(int i=0;i<N;i++)
scanf("%d",&a[i]);
int sum=a[0];
for(int i=1;i<N;i++)
{
sum^=a[i];
}
if(sum)
printf("Alice\n");
else
printf("Bob\n");
}
return 0;
}