AMR-KELEG's blog

By AMR-KELEG, history, 4 months ago, In English,

I can't solve this problem:

Can the problem somehow be reduced to NIM game?


4 months 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.