【多项式求逆】
【整式取模】
定义单项式取模。
定义多项式取模为它的每一项取模相加。
可以看出,模 相当于保留 次项。
【问题描述】
一般形式:已知多项式 ,求 使 。
特殊形式:已知多项式 ,求 使 。
我们只需要解特殊形式,因为解出特殊形式的 后,可以令 ,一次卷积 即可。
【解法 - 】
已知 ,求 使 。
记 的系数为 。
首先要保证 ,否则 不可逆;然后可得 ,可以解 。
然后 ,可以解出 …… 如此循环,可以 求解。
【解法 - 】
注意到如果 ,则 。所以我们可以增大 ,这样的解也是符合要求的解。
令 ,方便我们用倍增的方法优化。
假设已知 满足 ,怎么求得 满足 ?
因此 。从 到 ,只需要做两次多项式乘法和一次多项式减法,复杂度 。
但是倍增也有一个 啊?怎么是 呢?
因为对于一个 ,我们只保留多项式前 项即可,不用保留 项。因此复杂度应该是 。
可以把求逆看作除法。
【多项式开方】

【多项式带余除法】
给定 ,找 使得 ,要求 。
不妨 ,不然直接令 。记 。
为了下面方便,把 最高次不断补 ,直到 。
定义一个操作 ,。
的作用其实就是把 的系数翻转(Reverse)了。可以手算一下。
用多项式求逆解 。为什么这里的 是一定有逆的?因为 的最高次项的系数一定不是 ,否则 矛盾。因此 的常数项非 。求逆复杂度 。
因为 就是 的系数翻转。所以 可得 。而 ,一次卷积即可,复杂度 。
总复杂度 。
【例题】
的骨牌种类数为 。要用若干骨牌覆盖 。问方案数。。
法一:令 。用 个骨牌覆盖的方案数为 。。
先 算出来 ,然后 求 ,然后 求 的逆。
法二:考虑 DP。
。是卷积的形式。可以推出 。这个 是因为 时 ,但是 。
,求逆。
问 个点有标号连通图个数。。
法一:EGF。
令 为 " 个点有标号图个数" 的 EGF, 为 " 个点有标号连通图个数" 的 EGF。有 ,则 。虽然 还不知道,但是 可解。
法二:基于求逆。
令 为 个点有标号图数量, 为答案。枚举 所在连通块的大小 。
,套路把二项式系数拆开放。
已经是类似卷积的形式。考虑三个多项式 ,。可以观察到 ,因为 是已知的,所以 已知。一次求逆即可求出 。因为我们要求 的系数,模数取 即可。
【多项式 与 】
重要公式: 。
证明:当 时相等。而两侧导数相等。所以相等。注意这里有个负号。
可以看出,当 的常数项为 , 不含常数项。
(求 ,令 , 可求)
重要公式:。即泰勒展开式。
【】
给定多项式 ,保证常数项 ,求 。
因为 ,所以 。
(导数)。
大体思路是求 ,然后已知导数可以还原出 的 项系数。而 是已知的。
于是我们目标求 。而 已知,进而 已知。所以 可以用求逆 求得。
如果首项不是 怎么办?首先 是没有定义的,其次可以提取公因式使首项为 。
。
【】
。
给定常数项为 的 次多项式 ,求 。(如果常数项非 ,可以把常数项单独拆出来。例如 )
设 ,。还是倍增的思路,考虑如何求出 。
这里用到泰勒展开。即
令 ,再模 。因为 及以后模 都变成 了。所以 。
然后我们令 ,得到
可推出:
因此 。不断倍增直到模数足够。
然后 ,可求出 。
细节:记 为将 扩充为 的幂后的 。 是 次, 是 次,则 是 次。为了确定 次多项式的系数,需要 个点值,而 ,所以需要 个点值,所以 FFT 设置单位根要用 。
【例题】
求 。
注意 是物品个数, 是目标容积。
要把次方拿下来,可以用 。
复杂度? 内部是调和级数的 , 也是 的。
给定一个集合 ,问有多少个 阶置换,每个轮换大小都属于集合 。
可以看作图计数(若干个环)。这个和城市规划相反,连通的很好计数,不连通的反而不好算。
用 EGF 即可。

【多项式快速幂】
给定 。求 。
如果快速幂,复杂度 ,但可以优化到 。
要把次方拿下来,可以 。
假设 常数项为 ,。 因为常数项 很好求。
如果 ,则 。 用上面的方法求。
【多项式多点点值】
已知,求 在 的值。。
令 ,。
(多项式模多项式就是带余除法)
。
总思路是分治,先求 ,再求 ……
关键:已知 ,求 和 。这两者是对称的,只研究怎么求前者。
注意到 是 的因式,所以 。
如果 已知,可以 取模求出。每层复杂度 ,共 。
如何预处理 ?分治树从底向上。
【多项式多点插值】
还是拉格朗日插值法。先把不优化的 版本放出来。

可以优化到 。
先求分母。定义 。则 第 项分母为 在 的值。
而 在 时都为 。使用洛必达法则,,即求 在 的值。
于是先求 ,可以 分治求;然后 求 ;最后用上面的点值求出 在 的值,即可得到 的分母。
求出分母后,令 为第 个的分母乘以 。。这里 是已经 求出来的了。
这个式子直接循环还是至少平方级别。需要简化。
定义一个 。
(因为当 ,, 肯定是 )
这拆出来的两项和 原本的形式一样,只是规模减半了。所以可以分治下去。合并的时候 和 做乘法再相加即可。合并复杂度 ,总复杂度 。
对于 也要预处理,和点值的 处理方法一样。
【例题】
给定 , 和 个操作。每个操作要么全体加 ,要么全体求逆。这里一切运算均在模 意义下进行。每次操作后输出所有 之和。
结论:在第 轮操作后,所有 形式都是 。
即求 。
分子的次数等于分母,可以做分离常数,。如果 ,可以立刻求出来;否则上下同时除以 ,。然后可以把 统一提到求和符号外面去,。
上面所有只和 相关的都能求出来,然后怎么做?
定义 。预先把 次操作后的 都算出来,我们要求 在 的值。
但是 不是多项式。直接通分,分母 。观察到分子 恰好是 的导数(链式法则)。
可以 求, 可以从 求。对 多点求值即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!