Live2D

Note / Solution Set -「Binomial Sum」两道例题

  删本地文件的时候瞟了一眼内容 ... 这篇好像忘记发布了?


  给定 \(n,k\), 求出

\[\textit{ans}=\sum_{i=0}^n\binom{n}{i}i^k\bmod(10^9+7). \]

  \(k\le5\times10^3\), \(n\le10^9\).

 

\[\textit{ans} = \sum_{i=0}^n\binom{n}{i}k![x^k]e^{ix}= k![x^k](1+e^x)^n. \]

  EI 提供了一种规避高次幂计算的方法. 其本质是构造常数项为 \(0\) 的多项式, 再利用欲提取的系数位置 \(k\ll n\) 来降低幂次. 这里, 令 \(F(z)=(z+1)^n\), 并设 \(\mathscr F(z+1)=F(z+1)\bmod z^{k+1}\). 我们最终向 \(F(z+1)\) 代入的是 \(z=e^x-1\), 由于 \([x^0](e^x-1)=0\), 所以可以对 \(F(z+1)\) 进行截断操作, 将目标转化为求 \(\mathscr F(z+1)\).

  考虑 \(F(z+1)\) 的 ODE 与 \(\mathscr F(z+1)\) 的 ODE 的关系:

\[(2+z)F'(z+1)-nF(z+1)=0\\ \begin{aligned} \Rightarrow (2+z)\mathscr F'(z+1)-n\mathscr F(z+1) &= -2z^k[z^k]F'(z+1)\\ &= -2n\binom{n-1}{k}2^{n-1-k}z^k\\ &= (k-n)\binom{n}{k}2^{n-k}z^k. \end{aligned} \]

目标是求 \(\mathscr F(z+1)\) 的各项系数. 令 \(t=z+1\), 左右提取 \([t^i]\)

\[(i+1)[t^{i+1}]\mathscr F(t)+i[t^i]\mathscr F(t)-n[t^i]\mathscr F(t)=(k-n)\binom{n}{k}2^{n-k}\binom{k}{i}(-1)^{k-i}\\ \Rightarrow [t^{i+1}]\mathscr F(t)=\frac{1}{i+1}\left((k-n)\binom{n}{k}2^{n-k}\binom{k}{i}(-1)^{k-i}+(n-i)[t^i]\mathscr F(t)\right). \]

不过还需要求出 \([t^0]\mathscr F(t)\). 注意 \([z^i]\mathscr F(t)\) 非常好求, 拿它来表示 \([t^0]\mathscr F(t)\):

\[\begin{aligned}[] [t^0]\mathscr F(t) &= \sum_{i=0}^k[z^i]\mathscr F(t)\cdot(-1)^i\\ &= \sum_{i=0}^k\binom{n}{i}2^{n-i}(-1)^i. \end{aligned} \]

  最终

\[\textit{ans}=k![x^k]\mathscr F(e^x)=\sum_{i=0}^ki^k[t^i]\mathscr F(t). \]

可以做到 \(\mathcal O(k)\).

  喷一下洛谷日报, 跳过转化性的步骤留下初等的化简步骤, 真的很 confusing 呐.



  给定 \(n,k\), 求出

\[\textit{ans}=\sum_{i=0}^nf_ii^k\bmod(10^9+7), \]

其中 \(f\) 为 Fibonacci 数列, \(f_0=f_1=1\).

  \(n\le10^{17}\), \(k\le40\).

 

  和上一题差不多, 令 \(F(x)\) 为 Fibonacci 数列的 OGF\(\bmod x^{n+1}\) 所得多项式, 则

\[\textit{ans}=k![x^k]F(e^x). \]

分离 \(e^x\) 的常数项 \(e^x=(e^x-1)+1\), 则进行截取

\[\mathscr F(z+1)=F(z+1)\bmod z^{k+1}. \]

对于 \(F(z)\), 有

\[F(z)=\frac{1-f_{n+1}z^{n+1}-f_nz^{n+2}}{1-z-z^2}. \]

\(P(z)=1-f_{n+1}z^{n+1}-f_nz^{n+2}\), 于是

\[\mathscr F(z+1)=-\frac{P(z+1)}{1+3z+z^2}\bmod z^{k+1}. \]

  问题是我们啥也不会求 ... 从 \(P(z+1)\) 开始, 设 \(\mathscr P(z+1)=P(z+1)\bmod z^{k+1}\). 注意截断 \(P(z+1)\) 的主要矛盾不过是截断 \(G_n(z+1)=(z+1)^n\). 而这玩意儿可以和刚才一样建立 ODE 并进行扰动求出. 具体地:

\[(z+1)G_n'(z+1)-nG_n(z+1)=0\\ \begin{aligned} \Rightarrow (z+1)\mathscr G_n'(z+1)-n\mathscr G_n(z+1) &= -nz^k[z^k](z+1)^{n-1}\\ &= (k-n)\binom{n}{k}z^k. \end{aligned} \]

提取系数, 据此可以递推求出 \(\mathscr G_n(z+1)\) 的系数, 继而求出 \(\mathscr P(z+1)\).

  此后, 写出 \(F\) 的线性递推:

\[F(z+1)=3zF(z+1)+z^2F(z+1)-P(z+1)\\ \Rightarrow [z^i]F(z+1)=-3[z^{i-1}]F(z+1)-[z^{i-2}]F(z+1)-[z^i]P(z+1). \]

考虑取模在 \(\mathscr F\) 上带来的扰动:

\[\begin{aligned}[] [z^i]\mathscr F(z+1) &= -3[z^{i-1}]\mathscr F(z+1)-[z^{i-2}]\mathscr F(z+1)-[z^i]\mathscr P(z+1)\\ &+ [i=k+1]\cdot(3[z^{i-1}]\mathscr F(z+1)+[z^{i-2}]\mathscr F(z+1))\\ &+ [i=k+2]\cdot[z^{i-2}]\mathscr F(z+1). \end{aligned} \]

注意小细节, \(\mathscr F(z+1)=F(z+1)\bmod z^{k+1}\) 是定义, 我们需要在递推上作修补让递推符合这一定义, 而非直接将 \(z^{k+1}\) 等项忽略.

  令 \(a=3[z^k]\mathscr F(z+1)+[z^{k-1}]\mathscr F(z+1)\), \(b=[z^k]\mathscr F(z+1)\), 那么

\[\mathscr F(z+1)=-\frac{\mathscr P(z+1)-az^{k+1}-bz^{k+2}}{1+3z+z^2}\\ \Rightarrow \mathscr F(z)=\frac{\mathscr P(z)-a(z-1)^{k+1}-b(z-1)^{k+2}}{1-z-z^2}. \]

还是线性递推. 将其求出再同上题一样代回即可求出答案. 复杂度 \(\mathcal O(k)\).

posted @ 2022-10-13 19:31  Rainybunny  阅读(73)  评论(0编辑  收藏  举报