LightOJ1253 :Misere Nim
Alice and Bob are playing game of Misère Nim. Misère Nim is a game playing on k piles of stones, each pile containing one or more stones. The players alternate turns and in each turn a player can select one of the piles and can remove as many stones from that pile unless the pile is empty. In each turn a player must remove at least one stone from any pile. Alice starts first. The player who removes the last stone loses the game.
Input starts with an integer T (≤ 200), denoting the number of test cases.
Each case starts with a line containing an integer k (1 ≤ k ≤ 100). The next line contains k space separated integers denoting the number of stones in each pile. The number of stones in a pile lies in the range [1, 109].
For each case, print the case number and 'Alice' if Alice wins otherwise print 'Bob'.
3
4
2 3 4 5
5
1 1 2 4 10
1
1
Case 1: Bob
Case 2: Alice
Case 3: Bob
#include <iostream> #include <stdio.h> using namespace std; int main() { int i,n,t,k,data,ans,chongyu,cas=1; cin>>t; while(t--) { cin>>k; chongyu=ans=0; for(i=0;i<k;i++) { cin>>data; if(data>1) chongyu++; ans^=data; } if((ans&&chongyu)||(!ans&&!chongyu)) //s1,s2,t0 printf("Case %d: Alice ",cas++); else printf("Case %d: Bob ",cas++); } return 0; }