Claris和NanoApe在玩石子游戏,他们有n堆石子,规则如下: 1. Claris和NanoApe两个人轮流拿石子,Claris先拿。 2. 每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。 不同的初始局面,决定了最终的获胜者,有些局面下先拿的Claris会赢,其余的局面Claris会负。 Claris很好奇,如果这n堆石子满足每堆石子的初始数量是不超过m的质数,而且他们都会按照最优策略玩游戏,那么NanoApe能获胜的局面有多少种。 由于答案可能很大,你只需要给出答案对10^9+7取模的值。
天哪这个tinymce可以用latex我才知道……以及我还是想不到dp啊。
用到一个结论:后手获胜条件是每堆石子异或和为0。
设$f[i][j]$为前$i$堆异或和为$j$的方案数,$g[i]$表示$i$是否为质数。
于是$f[i][j]=\sum_{k=0}^mf[i-1][j\oplus k]g[k]$
然后变成卷积就是$f[i][j]=\sum_{a\oplus b=j}f[i-1][a]g[b]$
同样还是把$f[i-1][a]$递归展开发现是卷积套卷积……n次,于是FWT快速幂就好了。
#include
+++++++++++++++++++++++++++++++++++++++++++
+本文作者:luyouqi233。 +
+欢迎访问我的博客:+
+++++++++++++++++++++++++++++++++++++++++++