题目大意:
有两个人, n n n堆石子。每个人轮流取,每次可以取1~ x x x个,最后没得取的人输,两人都采取最优策略。
问对于 x x x从1到 i ( i ≤ n ) i(i\leq n) i(i≤n),问谁会赢。
思路:
首先想出 S G SG SG函数,取石子这样的一般都是先算出 a i m o d ( x + 1 ) a_i~ mod~(x + 1) ai mod (x+1),然后异或起来等不等于0。
考虑另一种算答案的方法。 a i m o d y = a i − ⌊ a i y ⌋ a_i~mod~y=a_i-⌊\frac{a_i}{y}⌋ ai mod y=ai−⌊yai⌋,然后枚举 y ( y ≤ n + 1 ) y(y\leq n+1) y(y≤n+1),再枚举 k ( k ≤ ⌊ n y ⌋ ) k(k\leq ⌊\frac{n}{y}⌋) k(k≤⌊yn