10/20/2025杂题 关于在线性时间内求解低次多项式的幂

\(g = ax^2 + bx + c\),求:

\[ f = g^n \]

其中 \(0 \leq n \leq 3 \times 10^5\)。结果对 \(10^9 + 7\) 取模。

首先可以直接用 MTT 在 \(O(n \log n)\) 的时间复杂度内求解。然而此做法常数太大,在需要多次求解时效率低下。这里我们介绍一种能在 \(O(n)\) 时间复杂度内求解问题的较小常数解法。

考虑对原式求导。根据复合函数求导法则:

\[ (f(g(x)))' = f'(g(x)) g'(x) \]

有:

\[ f' = n g^{n-1} g' \]

由于:

\[ g^{n-1} = \frac{f}{g} \]

所以:

\[ f' = n \frac{f}{g} g' \]

\[ f' g = n f g' \]

\[ [x^k] f' g = [x^k] n f g' \]

\[ f'_k g_0 + f'_{k-1} g_1 + f'_{k-2} g_2 = n (f_k g'_0 + f_{k-1} g'_1) \]

\[ (k+1) f_{k+1} g_0 + k f_k g_1 + (k-1) f_{k-1} g_2 = n f_k g'_0 + n f_{k-1} g'_1 \]

\[ f_{k+1} = \frac{n f_k g'_0 + n f_{k-1} g'_1 - k f_k g_1 - (k-1) f_{k-1} g_2}{(k+1)g_0} \]

先求出边界 \(f_0 = g_0^n\),然后就可以递推了。预处理 \(k+1,g_0\) 的逆元,时间复杂度为 \(O(n)\),常数比 MTT 小很多。

posted @ 2025-10-20 20:46  gevenfeng  阅读(5)  评论(0)    收藏  举报