本页面包含多项式常见的初等函数操作。具体而言,本页面包含如下内容:

  1. 多项式求逆
  2. 多项式开方
  3. 多项式除法
  4. 多项式取模
  5. 多项式指数函数
  6. 多项式对数函数
  7. 多项式三角函数
  8. 多项式反三角函数

多项式求逆

给定多项式 ,求 。

解法

倍增法

首先,易知

假设现在已经求出了 在模 意义下的逆元 。 有:

两边平方可得:

两边同乘 并移项可得:

递归计算即可。

时间复杂度

Newton’s Method

参见 Newton’s Method.

Graeffe 法

欲求 考虑

只需求出 即可还原出 因为 是偶函数,时间复杂度同上。

代码

例题

  1. 有标号简单无向连通图计数:「POJ 1737」Connected Graph

多项式开方

给定多项式 ,求 ,满足:

解法

倍增法

首先讨论 不为 的情况。

易知:

若 没有平方根,则多项式 没有平方根。

可能有多个平方根,选取不同的根会求出不同的 。

假设现在已经求出了 在模 意义下的平方根 ,则有:

倍增计算即可。

时间复杂度

还有一种常数较小的写法就是在倍增维护 的时候同时维护 而不是每次都求逆。

当 时,可能需要使用二次剩余来计算 。

上述方法需要知道 的逆,所以常数项不能为 。

若 ,则将 分解成 ,其中 。

  • 若 是奇数,则 没有平方根。

  • 若 是偶数,则求出 的平方根 ,然后得到 。

Newton’s Method

参见 Newton’s Method.

例题

  1. 「Codeforces Round #250」E. The Child and Binary Tree

多项式除法 & 取模

给定多项式 ,求 除 的商 和余数 。

解法

发现若能消除 的影响则可直接 多项式求逆 解决。

考虑构造变换

观察可知其实质为反转 的系数。

设 。

将 中的 替换成 并将其两边都乘上 ,得到:

注意到上式中 的系数为 ,则将其放到模 意义下即可消除 带来的影响。

又因 的次数为 ,故 不会受到影响。

则:

使用多项式求逆即可求出 ,将其反代即可得到 。

时间复杂度 。

多项式对数函数 & 指数函数

给定多项式 ,求模 意义下的 与 。

解法

普通方法

[list2tab]

  • 多项式对数函数 首先,对于多项式 ,若 存在,则由其 定义,其必须满足:

    对 求导再积分,可得:

    多项式的求导,积分时间复杂度为 ,求逆时间复杂度为 ,故多项式求 时间复杂度 。

  • 多项式指数函数 首先,对于多项式 ,若 存在,则其必须满足:

    否则 的常数项不收敛。

    对 求导,可得:

    比较两边系数可得:

    使用分治 FFT 即可解决。

    时间复杂度 。

Newton’s Method

使用 Newton’s Method 即可在 的时间复杂度内解决多项式 。

代码

例题

  1. 计算

    普通做法为多项式快速幂,时间复杂度 。

    当 时,有:

    当 时,设 的最低次项为 ,则:

    时间复杂度 。

多项式三角函数

给定多项式 ,求模 意义下的 与 。

解法

首先由 Euler’s formula 可以得到 三角函数的另一个表达式:

那么代入 就有:

直接按上述表达式编写程序即可得到模 意义下的 与 。再由 可求得 。

代码

多项式反三角函数

给定多项式 ,求模 意义下的 与 。

解法

仿照求多项式 的方法,对反三角函数求导再积分可得:

那么代入 就有:

直接按式子求就可以了。

代码

参考资料与链接

Footnotes

  1. Elementary function——Wikipedia ↩