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

  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