AMR-KELEG's blog

By AMR-KELEG, history, 7 years ago, In English

I can't solve this problem: http://www.spoj.com/HSPL09/problems/HS09NLG/

Can the problem somehow be reduced to NIM game?

  • Vote: I like it
  • 0
  • Vote: I do not like it

»
7 years ago, # |
  Vote: I like it +3 Vote: I do not like it

Yes, you can use Sprague–Grundy theorem. To find the grundy numbers, you may use dp such as: dp(i, j) — grundy number for a stack with i stones and having taken j stones from this stack in the previous round. You may use j as 0 in the initial call, where you can take every but one stone from the stack. Then, you may precompute them in an array g[i] from 1 to 300 by calling g[i] = dp(i, 0). For a query, just xor the precomputed values and check whether it is 0.