HDU 1536--s-nim Game

Source: Internet
Author: User

Topic:

Description

Arthur and his sister Caroll has been playing a game called Nim for some time now. Nim is played as follows:


The starting position have a number of heaps, all containing some, not necessarily equal, number of beads.

The players take turns chosing a heap and removing a positive number of beads from it.

The first player isn't able to make a move, loses.


Arthur and Caroll really enjoyed playing this simple game until they recently learned a easy-to-always be-able to fin D The best move:


Xor the number of beads in the heaps in the current position (i.e. if we have 2, 4 and 7 The xor-sum would be 1 as 2 XOR 4 XOR 7 = 1).

If The xor-sum is 0, too bad, you'll lose.

Otherwise, move such that the xor-sum becomes 0. This was always possible.


It's quite easy-to-convince oneself that's this works. Consider these facts:

The player is takes the last bead wins.

After the winning player's last move the xor-sum would be 0.

The xor-sum would change after every move.


Which means that if you do sure that the xor-sum always was 0 when you had made your move, your opponent would never be a Ble to win, and, thus, you'll win.

Understandibly It is no play a game when both players know how to play perfectly (ignorance is bliss). Fourtunately, Arthur and Caroll soon came up with a similar game, S-nim, which seemed to solve this problem. Each player was now only allowed to remove a number of beads in some predefined set S, e.g. if we had S = (2, 5) each Playe Allowed to remove 2 or 5 beads. Now it isn't always possible to make the xor-sum 0 and, thus, the strategy above is useless. Or is it?

Your job is to write a program this determines if a position of S-nim is a losing or a winning position. A position is a winning position if there are at least one move to a losing position. A position is a losing position if there be no moves to a losing position. This means, as expected, which a position with no legal moves is a losing position.

Input

Input consists of a number of test cases. For each test case:the first line contains a number k (0 < k≤100 describing the size of S, followed by K numbers si (0 < si≤10000) describing S. The second line contains a number m (0 < m≤100) describing the number of positions to evaluate. The next m lines each contain a number L (0 < l≤100) describing the number of heaps and L numbers hi (0≤hi≤10000) Describing the number of beads in the heaps. The last test case was followed by a 0 on a line of its own.

Output

For each position:if the described position is a winning position print a ' W '. If the described position is a losing position print a ' L '. Print a newline after all test case.

Sample Input

2 2 5 3 2 5 12 3 2 4 7 4 2 3 7 12 5 1 2 3 4 5 3 2 5 12 3 2 4 7 4 2 3 7 12 0

Sample Output

LWW WWL Test instructions:.. I don't understand. Analysis: S-nim game, the main study of the method of the SG to play the table
1#include <iostream>2#include <cstring>3#include <algorithm>4 using namespacestd;5 ints[ the],sg[10001];6 BOOLmex[10001];7 voidGET_SG (intTintN)8 {9     inti,j;Tenmemset (SG,0,sizeof(SG)); One      for(i=1; i<=n;i++) A     { -Memset (MEX,0,sizeof(MEX)); -          for(j=1; j<=t&&s[j]<=i;j++) themex[sg[i-s[j]]]=1; -          for(j=0; j<=n;j++) -             if(!Mex[j]) -              Break; +sg[i]=J; -     } + } A intMain () at { -     intK; -      while(cin>>k,k) -     { -          for(intI=1; i<=k;i++) -Cin>>S[i]; inSort (s+1, s+k+1); -Get_sg (k,10001); to         intm,n,ans,t; +Cin>>m; -          while(m--) the         { *Cin>>N; $ans=0;Panax Notoginseng              for(intI=0; i<n;i++) -             { theCin>>T; +ans^=Sg[t]; A             } the             if(ANS) +cout<<'W'; -             Else $cout<<'L'; $         } -cout<<Endl; -     } the     return 0; -}
View Code

HDU 1536--s-nim Game

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.