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)\) .

posted @ 2024-10-17 06:32  Jijidawang  阅读(168)  评论(3编辑  收藏  举报
😅​