一些模板与式子。
1.多项式乘法
梦开始的地方。
1.1. FFT 快速傅里叶变换
模板
1 |
|
1.2. NTT 快速数论变换
模板
1 |
|
2.多项式乘法逆
给定 $f(x)$,求 $f^{-1}(x)$。
倍增法
首先知道:
考虑倍增。假设已经求出 $f(x)$ 在 $\pmod {x^{\lceil \frac{n}{2}\rceil}}$ 意义下逆元 $f_0^{-1}(x)$。推一下:
同时除以 $f(x)$ 得到:
整理一下,最终得到:
递归计算即可,时间复杂度 $\mathcal O(n\log n)$。
模板
1 |
|
3.多项式开根
给定 $g(x)$,求 $f(x)$ 满足:
倍增法
首先知道:
考虑倍增。假设已经求出 $g(x)$ 在 $\pmod {x^{\lceil \frac{n}{2}\rceil}}$ 意义的平方根 $f_0(x)$。推一下:
最终得到:
需要一次多项式求逆,时间复杂度 $\mathcal O(n\log n)$。
多项式快速幂
4.多项式除法
给定一个 $n$ 次多项式 $F(x)$ 和一个 $m$ 次多项式 $G(x)$ ,请求出多项式 $Q(x)$, $R(x)$,满足以下条件:
- $Q(x)$ 次数为 $n-m$,$R(x)$ 次数小于 $m$
- $F(x) = Q(x) * G(x) + R(x)$
做法
我们发现假如没有 $R(x)$,那么我们只需要对 $G(x)$ 做一次多项式求逆,再与 $F(x)$ 相乘即可。于是尝试去掉 $R(x)$ 的影响。
考虑一种变换,我们将 $F(x)$ 视作 $n$ 次多项式(实际次数小于等于 $n$),$F_R(x)=x^n F(\frac{1}{x})$,即 $[x_i]F_R(x)=[x_{n-i}]F(x)$。
开始推导:
注意 $Q_R(x)$ 的次数为 $n-m$,我们考虑对整个式子对 $x^{n-m+1}$ 取模并不会影响 $Q_R(x)$,并且可以消去 $R_R(x)$。
于是可以得到 $Q(x)$,继而可以得到 $R(x)$。