普通/下降幂多项式平移
【普通多项式】
已知 \(f(x)=\displaystyle\sum_{i=0}^{n}a_ix^i\),求 \(f(x+c)\) 的系数。
\[\begin{aligned}
f(x+c)&=\sum_{i=0}^na_i(x+c)^i\\
&=\sum_{i=0}^na_i\sum_{j=0}^i{i\choose j}x^jc^{i-j}\\
&=\sum_{j=0}^n\dfrac{x^j}{j!}\sum_{i=j}^{n}i!a_i\dfrac{c^{i-j}}{(i-j)!}\\
&=\sum_{i=0}^n\dfrac{x^i}{i!}\sum_{j=i}^{n}j!a_j\dfrac{c^{j-i}}{(j-i)!}
\end{aligned}
\]
记 \(ans_i=\sum_{j=i}^nj!a_j\dfrac{c^{j-i}}{(j-i)!}\),目标是求出 \(ans_0\sim ans_n\)。
发现 \(j!a_j\) 和 \(\dfrac{c^{j-i}}{(j-i)!}\) 很像卷积的形式。但是它们不是和一定而是差一定。对于这种非标准形式卷积,我们可以用翻转的方法。令 \(k=j-i\)。
\[ans_i=\sum_{k=0}^{n-i}(k+i)!a_{k+i}\cdot\dfrac{c^k}{k!}=\sum_{l+k=n-i}(n-l)!a_{n-l}\cdot\dfrac{c^k}{k!}
\]
开始翻转,令 \(a'_i=(n-i)!a_{n-i}\),则 \(ans_i=\sum_{l+k=n-i}a'_l\cdot \dfrac{c^k}{k!}\)。
再翻转一次,令 \(ans'_i=ans_{n-i}\),则 \(ans'_i=\sum_{l+k=i}a'_l\cdot \dfrac{c^k}{k!}\)。所以 \(ans'\) 这个数组可以用 \(a'\) 数组和 \(\dfrac{c^k}{k!}\) 卷出来。
推出 \(ans\) 之后,回到 \(f(x+c)=\sum_{i=0}^n\dfrac{x^i}{i!}ans_i\) 即可。
【下降幂多项式】
已知 \(f(x)=\sum_{i=0}^{n}b_ix^{\underline{i}}\),求 \(f(x+c)\) 下降幂形式的系数。
关键公式:\((x+c)^{\underline{n}}=\displaystyle\sum_{i=0}^n{n\choose i}x^{\underline{i}}c^{\underline{n-i}}\)。
\[\begin{aligned}
f(x+c)&=\sum_{i=0}^nb_i(x+c)^{\underline{i}}\\
&=\sum_{i=0}^nb_i\sum_{j=0}^i{i\choose j}x^{\underline{j}}c^{\underline{i-j}}\\
&=\sum_{j=0}^{n}\dfrac{x^{\underline{j}}}{j!}\sum_{i=j}^ni!b_i\dfrac{c^{\underline{i-j}}}{(i-j)!}\\
&=\sum_{i=0}^{n}\dfrac{x^{\underline{i}}}{i!}\sum_{j=i}^nj!b_j\dfrac{c^{\underline{j-i}}}{(j-i)!}\\
&=\sum_{i=0}^n\dfrac{x^{\underline{i}}}{i!}ans_i\\
\end{aligned}
\]
\[\begin{aligned}
ans_i&=\sum_{j=i}^nj!b_j\dfrac{c^{\underline{j-i}}}{(j-i)!}\\
&=\sum_{j=0}^{n-i}(j+i)!b_{j+i}\cdot\dfrac{c^{\underline{j}}}{j!}\\
&=\sum_{j=0}^{n-i}b'_{n-i-j}\cdot \dfrac{c^{\underline{j}}}{j!}
\end{aligned}
\]
\[ans'_i=ans_{n-i}=\sum_{j=0}^{n-(n-i)}b'_{n-(n-i)-j}\cdot \dfrac{c^{\underline{j}}}{j!}=\sum_{j=0}^i b'_{i-j}\cdot \dfrac{c^{\underline{j}}}{j!}=\sum_{j+k=i}b'_j\dfrac{c^{\underline{k}}}{k!}
\]
所以两种多项式平移都是 \(O(n\log n)\) 的。