Statistics

Problem Statement for "PowerfulGame"

Problem Statement

A two-player game is played with N = B-A+1 piles of tokens. The piles are numbered from A to B, inclusive. Initially, pile number i contains exactly 2^i tokens.

(E.g., if A=2 and B=5, there are four piles containing 4, 8, 16, and 32 tokens at the beginning of the game.)


Before the game the players also choose a positive integer K not exceeding N.

The players take alternating turns. During each turn the current player must choose exactly K non-empty piles and then remove exactly one token from each of the chosen piles. The player unable to make a valid move loses the game.


You are given A, B, and K. Determine whether the starting position of this game is winning or losing for the player who plays first.

If the position is losing, return {-2}.

If the position is winning and B <= 7, return any one possible winning first move: an increasing sequence of K pile numbers the first player should choose in the first turn of the game.

If the position is winning and B = 47 and K = 42, also return any one possible winning first move.

In all other cases in which the position is winning, return {-1}.

Definition

Class:
PowerfulGame
Method:
solve
Parameters:
int, int, int
Returns:
int[]
Method signature:
int[] solve(int A, int B, int K)
(be sure your method is public)

Notes

  • A position is winning for the player whose turn it is if that player has a strategy that guarantees a win, regardless of what plays the opponent makes. Similarly, a position is losing if the opponent has such a strategy.
  • It can be shown that each position of this game is either winning or losing, but never both.
  • Remember that if you are returning a winning move, the pile numbers must be in increasing order.

Constraints

  • 0 <= A <= B <= 100.
  • K will be between 1 and the number of piles, inclusive.

Examples

  1. 0

    6

    1

    Returns: {4 }

    With K=1 the players are simply removing any one token at a time.

  2. 4

    7

    2

    Returns: {-2 }

  3. 0

    8

    3

    Returns: {-1 }

  4. 0

    3

    2

    Returns: {1, 2 }

    In this starting position there are two possible winning moves: the first player can choose either {0, 3} or {1, 2}. The first choice will lead to piles with {0, 2, 4, 7} tokens, the second choice produces piles with {1, 1, 3, 8} tokens. If the first player makes any other starting move, the second player will have a way to win the game.

  5. 0

    0

    1

    Returns: {0 }

  6. 0

    1

    1

    Returns: {0 }

  7. 0

    1

    2

    Returns: {0, 1 }

  8. 1

    1

    1

    Returns: {-2 }

  9. 0

    2

    1

    Returns: {0 }

  10. 0

    2

    2

    Returns: {0, 2 }

  11. 0

    2

    3

    Returns: {0, 1, 2 }

  12. 1

    2

    1

    Returns: {-2 }

  13. 1

    2

    2

    Returns: {-2 }

  14. 2

    2

    1

    Returns: {-2 }

  15. 0

    3

    1

    Returns: {0 }

  16. 0

    3

    2

    Returns: {1, 2 }

  17. 0

    3

    3

    Returns: {0, 2, 3 }

  18. 0

    3

    4

    Returns: {0, 1, 2, 3 }

  19. 1

    3

    1

    Returns: {-2 }

  20. 1

    3

    2

    Returns: {-2 }

  21. 1

    3

    3

    Returns: {-2 }

  22. 2

    3

    1

    Returns: {-2 }

  23. 2

    3

    2

    Returns: {-2 }

  24. 3

    3

    1

    Returns: {-2 }

  25. 0

    4

    1

    Returns: {0 }

  26. 0

    4

    2

    Returns: {0, 4 }

  27. 0

    4

    3

    Returns: {0, 3, 4 }

  28. 0

    4

    4

    Returns: {0, 2, 3, 4 }

  29. 0

    4

    5

    Returns: {0, 1, 2, 3, 4 }

  30. 1

    4

    1

    Returns: {-2 }

  31. 1

    4

    2

    Returns: {-2 }

  32. 1

    4

    3

    Returns: {-2 }

  33. 1

    4

    4

    Returns: {-2 }

  34. 2

    4

    1

    Returns: {-2 }

  35. 2

    4

    2

    Returns: {-2 }

  36. 2

    4

    3

    Returns: {-2 }

  37. 3

    4

    1

    Returns: {-2 }

  38. 3

    4

    2

    Returns: {-2 }

  39. 4

    4

    1

    Returns: {-2 }

  40. 0

    5

    1

    Returns: {0 }

  41. 0

    5

    2

    Returns: {0, 5 }

  42. 0

    5

    3

    Returns: {0, 4, 5 }

  43. 0

    5

    4

    Returns: {0, 3, 4, 5 }

  44. 0

    5

    5

    Returns: {0, 2, 3, 4, 5 }

  45. 0

    5

    6

    Returns: {0, 1, 2, 3, 4, 5 }

  46. 1

    5

    1

    Returns: {-2 }

  47. 1

    5

    2

    Returns: {-2 }

  48. 1

    5

    3

    Returns: {-2 }

  49. 1

    5

    4

    Returns: {-2 }

  50. 1

    5

    5

    Returns: {-2 }

  51. 2

    5

    1

    Returns: {-2 }

  52. 2

    5

    2

    Returns: {-2 }

  53. 2

    5

    3

    Returns: {-2 }

  54. 2

    5

    4

    Returns: {-2 }

  55. 3

    5

    1

    Returns: {-2 }

  56. 3

    5

    2

    Returns: {-2 }

  57. 3

    5

    3

    Returns: {-2 }

  58. 4

    5

    1

    Returns: {-2 }

  59. 4

    5

    2

    Returns: {-2 }

  60. 5

    5

    1

    Returns: {-2 }

  61. 0

    6

    1

    Returns: {4 }

  62. 0

    6

    2

    Returns: {0, 6 }

  63. 0

    6

    3

    Returns: {0, 5, 6 }

  64. 0

    6

    4

    Returns: {0, 4, 5, 6 }

  65. 0

    6

    5

    Returns: {0, 3, 4, 5, 6 }

  66. 0

    6

    6

    Returns: {0, 2, 3, 4, 5, 6 }

  67. 0

    6

    7

    Returns: {0, 1, 2, 3, 4, 5, 6 }

  68. 1

    6

    1

    Returns: {-2 }

  69. 1

    6

    2

    Returns: {-2 }

  70. 1

    6

    3

    Returns: {-2 }

  71. 1

    6

    4

    Returns: {-2 }

  72. 1

    6

    5

    Returns: {-2 }

  73. 1

    6

    6

    Returns: {-2 }

  74. 2

    6

    1

    Returns: {-2 }

  75. 2

    6

    2

    Returns: {-2 }

  76. 2

    6

    3

    Returns: {-2 }

  77. 2

    6

    4

    Returns: {-2 }

  78. 2

    6

    5

    Returns: {-2 }

  79. 3

    6

    1

    Returns: {-2 }

  80. 3

    6

    2

    Returns: {-2 }

  81. 3

    6

    3

    Returns: {-2 }

  82. 3

    6

    4

    Returns: {-2 }

  83. 4

    6

    1

    Returns: {-2 }

  84. 4

    6

    2

    Returns: {-2 }

  85. 4

    6

    3

    Returns: {-2 }

  86. 5

    6

    1

    Returns: {-2 }

  87. 5

    6

    2

    Returns: {-2 }

  88. 6

    6

    1

    Returns: {-2 }

  89. 0

    7

    1

    Returns: {0 }

  90. 0

    7

    2

    Returns: {0, 7 }

  91. 0

    7

    3

    Returns: {0, 6, 7 }

  92. 0

    7

    4

    Returns: {0, 5, 6, 7 }

  93. 0

    7

    5

    Returns: {0, 4, 5, 6, 7 }

  94. 0

    7

    6

    Returns: {0, 3, 4, 5, 6, 7 }

  95. 0

    7

    7

    Returns: {0, 2, 3, 4, 5, 6, 7 }

  96. 0

    7

    8

    Returns: {0, 1, 2, 3, 4, 5, 6, 7 }

  97. 1

    7

    1

    Returns: {-2 }

  98. 1

    7

    2

    Returns: {-2 }

  99. 1

    7

    3

    Returns: {-2 }

  100. 1

    7

    4

    Returns: {-2 }

  101. 1

    7

    5

    Returns: {-2 }

  102. 1

    7

    6

    Returns: {-2 }

  103. 1

    7

    7

    Returns: {-2 }

  104. 2

    7

    1

    Returns: {-2 }

  105. 2

    7

    2

    Returns: {-2 }

  106. 2

    7

    3

    Returns: {-2 }

  107. 2

    7

    4

    Returns: {-2 }

  108. 2

    7

    5

    Returns: {-2 }

  109. 2

    7

    6

    Returns: {-2 }

  110. 3

    7

    1

    Returns: {-2 }

  111. 3

    7

    2

    Returns: {-2 }

  112. 3

    7

    3

    Returns: {-2 }

  113. 3

    7

    4

    Returns: {-2 }

  114. 3

    7

    5

    Returns: {-2 }

  115. 4

    7

    1

    Returns: {-2 }

  116. 4

    7

    2

    Returns: {-2 }

  117. 4

    7

    3

    Returns: {-2 }

  118. 4

    7

    4

    Returns: {-2 }

  119. 5

    7

    1

    Returns: {-2 }

  120. 5

    7

    2

    Returns: {-2 }

  121. 5

    7

    3

    Returns: {-2 }

  122. 6

    7

    1

    Returns: {-2 }

  123. 6

    7

    2

    Returns: {-2 }

  124. 7

    7

    1

    Returns: {-2 }

  125. 0

    54

    36

    Returns: {-1 }

  126. 0

    67

    66

    Returns: {-1 }

  127. 26

    58

    27

    Returns: {-2 }

  128. 4

    93

    1

    Returns: {-2 }

  129. 31

    42

    6

    Returns: {-2 }

  130. 55

    81

    8

    Returns: {-2 }

  131. 0

    75

    57

    Returns: {-1 }

  132. 0

    39

    23

    Returns: {-1 }

  133. 44

    85

    16

    Returns: {-2 }

  134. 0

    13

    2

    Returns: {-1 }

  135. 0

    55

    33

    Returns: {-1 }

  136. 33

    78

    42

    Returns: {-2 }

  137. 22

    38

    16

    Returns: {-2 }

  138. 0

    23

    22

    Returns: {-1 }

  139. 0

    45

    23

    Returns: {-1 }

  140. 73

    77

    4

    Returns: {-2 }

  141. 0

    48

    17

    Returns: {-1 }

  142. 29

    75

    41

    Returns: {-2 }

  143. 0

    35

    17

    Returns: {-1 }

  144. 72

    86

    8

    Returns: {-2 }

  145. 3

    10

    2

    Returns: {-2 }

  146. 0

    43

    28

    Returns: {-1 }

  147. 49

    55

    5

    Returns: {-2 }

  148. 0

    42

    41

    Returns: {-1 }

  149. 2

    49

    14

    Returns: {-2 }

  150. 28

    53

    6

    Returns: {-2 }

  151. 26

    69

    7

    Returns: {-2 }

  152. 0

    26

    17

    Returns: {-1 }

  153. 0

    59

    29

    Returns: {-1 }

  154. 0

    9

    2

    Returns: {-1 }

  155. 0

    56

    3

    Returns: {-1 }

  156. 0

    26

    7

    Returns: {-1 }

  157. 0

    72

    73

    Returns: {-1 }

  158. 2

    81

    23

    Returns: {-2 }

  159. 0

    28

    21

    Returns: {-1 }

  160. 10

    14

    1

    Returns: {-2 }

  161. 8

    57

    6

    Returns: {-2 }

  162. 0

    47

    16

    Returns: {-1 }

  163. 69

    87

    18

    Returns: {-2 }

  164. 35

    83

    37

    Returns: {-2 }

  165. 44

    71

    4

    Returns: {-2 }

  166. 0

    61

    59

    Returns: {-1 }

  167. 0

    47

    39

    Returns: {-1 }

  168. 3

    26

    15

    Returns: {-2 }

  169. 59

    92

    28

    Returns: {-2 }

  170. 67

    81

    13

    Returns: {-2 }

  171. 32

    45

    13

    Returns: {-2 }

  172. 0

    40

    11

    Returns: {-1 }

  173. 3

    68

    59

    Returns: {-2 }

  174. 36

    67

    13

    Returns: {-2 }

  175. 0

    47

    42

    Returns: {0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47 }


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: