容易发现每一维的转移都是一个循环卷积。
然后我们只用解决循环卷积快速幂和循环卷积乘法。
使用 333 进制 FWT 转化成各点值处操作即可。
我们还需要三次单位根,这个可以直接使用分圆多项式的技巧来扩环,在模 1+x+x21+x+x^21+x+x2 下处理即可。
由题意,显然有 3∤p3\nmid p3∤p,于是 333 有逆元,所以单位根反演的除法就很好做了。
然后嗯做就做完了。
复杂度容易做到 O(m3m+m2logt)O(m3^m+m^2\log t)O(m3m+m2logt)。
参考代码。
注册一个 BZOJ by HydroOJ 通用账户,您就可以在我们提供的所有在线评测服务上提交代码、参与讨论。
使用您的 HydroOJ 通用账户