Problem Description Here is a game for two players. The rule of the game is described below:
● In the beginning of the game, there are a lot of piles of beads.
● Players take turns to play. Each turn, player choose a pile i and remove some (at least one) beads from it. Then he could do nothing or split pile i into two piles with a beads and b beads.(a,b > 0 and a + b equals to the number of beads of pile i after removing)
● If after a player's turn, there is no beads left, the player is the winner.
Input There are multiple test cases. Please process till EOF.
For each test case, the first line contains a postive integer n(n < 10 5) means there are n piles of beads. The next line contains n postive integer, the i-th postive integer a i(a i < 2 31) means there are a i beads in the i-th pile.
Output For each test case, if the first player can win the game, ouput "Win" and if he can't, ouput "Lose"
Sample Input
1 1 2 1 1 3 1 2 3
Sample Output
Win Lose Lose 题意:取完石头后,可以再把这堆分成两个堆 思路:类似Nim游戏:异或起来0为先手输#include#include #include #include typedef __int64 ll; using namespace std; int main() { int n; while (scanf("%d", &n) != EOF) { ll ans = 0; ll tmp; for (int i = 0; i < n; i++) { scanf("%I64d", &tmp); ans ^= tmp; } if (ans == 0) printf("Lose\n"); else printf("Win\n"); } }