http://poj.org/problem?id=2234
Matches
Game
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 7914 | Accepted: 4554 |
Description
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.
Input
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.
Output
For
each test case, output "Yes" in a single line, if the player who play first will
win, otherwise output "No".
Sample Input
2 45 45 3 3 6 9
Sample Output
No Yes
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 }