2024.10.17 闲话
歌:センセイセンセイ - ぴーなた feat. 歌愛ユキ & メイメイ .
给 \(a,b,c,n\),求:
\[\sum_{i=0}^n[c\mid i]\dbinom nia^ib^{n-i} \]对 \(19260817\) 取模 . \(c\le 100\) .
原题比较随便做,下面考虑一下尽可能快能到多快 . 下面 \(\mathsf M(n)\) 是长度为 \(n\) 的多项式乘法的复杂度 .
套路一下大概就是单位根反演,然后要求 \(\displaystyle\dfrac1c\sum_{i=0}^{c-1}(a\omega_c^i+b)^n\) . 到这里其实有点不可做了,因为模意义下单位根不一定存在 . 我最快能编出 \(O(c\cdot \mathsf M(c)\log n)\) 的做法 .
还是别套路了 . 另一方面可以观察到,令 \(A\) 是如下构造的 \(c\times c\) 矩阵(下标从 0 开始):
- \(A_{i,i}=b\) .
- \(A_{i,(i-1)\bmod c}=a\) .
- 对于上面两条之外的位置,\(A_{i,j}=0\) .
那么答案就是 \(A^n_{0,0}\) .
因为循环矩阵的幂还是循环矩阵,所以实际上只需要算第一行 . 然后每次矩阵乘法大概是做卷积,那么就 \(O(\mathsf M(c)\log n)\) 了,暴打单位根反演 .
upd. 楼下说得对,可以看成是算 \([x^0](ax+b)^n\bmod(x^c-1)\) .
图
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/18470372
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ