Here
is a simple game. In this game, there are several piles of matches and two
players. The two player play in turn. In each turn, one can choose a pile and
take away arbitrary number of matches from the pile (Of course the number of
matches, which is taken away, cannot be zero and cannot be larger than the
number of matches in the chosen pile). If after a player’s turn, there is no
match left, the player is the winner. Suppose that the two players are all very
clear. Your job is to tell whether the player who plays first can win the game
or not.
The
input consists of several lines, and in each line there is a test case. At the
beginning of a line, there is an integer M (1 <= M <=20), which is the
number of piles. Then comes M positive integers, which are not larger than
10000000. These M integers represent the number of matches in each pile.
For
each test case, output "Yes" in a single line, if the player who play first will
win, otherwise output "No".
1 #include<stdio.h>
2 int main()
3 {
4 int n,i,a[50];
5 int temp,ans;
6 while(~scanf("%d",&n))
7 {
8 temp=0;
9 ans=-1;
10 for(i=0;i<n;i++)
11 {
12 scanf("%d",&a[i]);
13 if(i==0)
14 ans=a[i];
15 else
16 ans=ans^a[i];
17 if(a[i]>1)
18 temp=1;
19 }
20 if(temp==0)
21 {
22 if(n%2==1)
23 printf("No\n");
24 else
25 printf("Yes\n");
26 }
27 else
28 {
29 if(ans==0)
30 printf("No\n");
31 else
32 printf("Yes\n");
33
34 }
35 }
36 return 0;
37 }