FWT
首先后手必胜的条件是石子数异或和为0。
因为石子数只能是质数个,那么我们构造一个向量,维数为质数的打上1,其它的都是0,那么方案数就是n个向量的异或卷积。FWT后快速幂一下再FWT回来就好了。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 1<<16
#define M 50000
#define F inline
using namespace std;
typedef long long LL;
const L