多项式中步
Posted oiertkj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多项式中步相关的知识,希望对你有一定的参考价值。
因为快要WC了所以学一下多项式全家桶,不过国赛大概率是不会考这么难的
因为比初步难所以叫多项式中步
然而好像并不会有多项式高步
基础概念与前置知识
基础概念
只是介绍一下符号和概念
假设(f(x))是一个多项式
([x^i]f(x))表示(f(x))的第i项(也就是(x)的系数为(i)的那一项)
(f(x)mod x^n)相当于是将次数大于等于n的项移除
多项式除法
对于两个多项式,存在唯一的多项式(Q(x),R(x))
[f(x)=Q(x)g(x)+R(x)]
[deg(Q)=deg(f)-deg(g)]
[deg(R)lessdot deg(g)]
可以类比初中的除法
多项式求导
前置知识求导
我博客里曾经有过,但是它咕了
由简单的求导公式和导数运算律
我们可以知道对于一个多项式
[f(x)=sumlimits_{i=0}^{n}a_ix^i]
[f'(x)=sumlimits_{i=0}^{n-1}(i+1)a_{i+1}x^i]
积分是求导的逆运算
对于一个导数
[f'(x)=sumlimits_{i=0}^{n}a_ix^i]
[f(x)=sumlimits_{i=0}^{n}frac{a_{i}}{i+1}x^{i+1}]
全家桶
开个一亿的桶
--zwj1
多项式求逆
只会倍增法
求(f^{-1}(x)mod x^n)
从小往大推
[f^{-1}(x)equiv([x^0]f(x))-1pmod {x}]
递归边界就是最后等于常数项的逆元
假设已经知道了(mod x^{lceilfrac{n}{2}
ceil})的逆元(g(x))
然后递推出(mod x^{n})的逆元(h(x))(这样记只是为了不写上标)
[f(x)g(x)equiv 1pmod{x^{lceilfrac{n}{2}
ceil}}]
[f(x)g(x)-1equiv 0pmod{x^{lceilfrac{n}{2}
ceil}}]
因为右边的值为0,所以此时两边平方之后会变成(pmod{x^{n}})
[(f(x)g(x)-1)^2equiv 0pmod{x^n}]
[f^2(x)g^2(x)-2f(x)g(x)+1=0pmod{x^n}]
[1=2f(x)g(x)-f^2(x)g^2(x)pmod{x^n}]
两边同除(f(x))
[h(x)=2g(x)-f(x)g^2(x)pmod{x^n}]
提出一个(g(x))
[h(x)=g(x)(2-f(x)g(x))pmod{x^n}]
递归就完了
虽然做了很多次NTT,但是时间复杂度是(nlog n)的
多项式除法
咕咕咕
多项式牛顿迭代
求(g(f(x))equiv0pmod{x^n})
假设已经得到了(mod lceilfrac{n}{2}
ceil)的答案(f_0(x))
将这个函数在(f_0(x))处泰勒展开
[sumlimits_{i=0}^{infin}frac{g^{(i)}(f_0(x))}{i!}(f(x)-f_0(x))^iequiv0pmod{x^n}]
易知
(f(x)-f_0(x))的后(lceilfrac{n}{2}
ceil)为(0),所以二次及以上的系数全为(0)
那后面就都没了
[g(f_0(x))+g'(f_0(x))(f(x)-f_0(x))equiv0pmod{x^n}]
[f(x)equiv f_0(x)-frac{g(f_0(x))}{g'(f_0(x))}pmod{x^n}]
大概是因为这个式子长得很像牛顿迭代所以叫他多项式牛顿迭代
具体应用见多项式(exp)和多项式开方
多项式ln(多项式对数函数)
求(ln f(x)pmod{x^n})
设所求为(g(x))
[g(x)=ln f(x)pmod{x^n}]
对两边求导
[g'(x)=ln'(f(x))f'(x)pmod{x^n}]
[已知ln'x=frac{1}{x}]
[g'(x)=frac{f'(x)}{f(x)}pmod{x^n}]
求个逆就完了
因为多项式求逆是(O(nlogn))的,所以它也是(O(nlogn))的
多项式exp(多项式指数函数)
用多项式牛顿迭代
求(f(x)equiv e^{a(x)}pmod{x^n})
[ln f(x)equiv a(x)pmod{x^n}]
[ln f(x)-a(x)equiv 0pmod{x^n}]
[g(f(x))=ln f(x)-a(x)]
[g'(f(x))=frac{1}{f(x)}]
(这里把(f(x))看做参数,(a(x))看做常数)
带入牛顿迭代的式子
[f(x)=f_0(x)-f_0(x)(ln f_0(x)-a(x))pmod{x^n}]
[f(x)=f_0(x)(1-ln f_0(x)+a(x))pmod{x^n}]
因为多项式(ln)是(O(nlogn))的,所以它还是(O(nlogn))的(迫真)
多项式快速幂
低级做法
直接快速幂
时间复杂度(O(nlog nlog k))
先求(ln)再乘(k)再求(exp)
时间复杂度(O(nlog n))
好像这样可以实现(O(1))快速幂QAQ
多项式开方
就是对于一个(f(x)),求一个(g(x))
使得(g^2(x)=f(x)pmod{x^n})
倍增法
和多项式求逆一样的颓法
边界一样(因为板子保证了([x^0]a(x)=1)所以不用写二次剩余)
牛顿迭代法
设
[f(x)equivsqrt{a(x)}pmod{x^n}]
[f^2(x)equiv a(x)pmod{x^n}]
[f^2(x)-a(x)equiv 0pmod{x^n}]
[g(f(x))=f^2(x)-a(x)]
[g'(f(x))=2f(x)]
[f(x)equiv f_0(x)-frac{f_0^2(x)-a(x)}{2f_0(x)}pmod{x^n}]
迫真(nlog n)法
用多项式快速幂求(a(x)^{frac{1}{2}})
多项式多点求值
咕
多项式快速插值
咕
以上是关于多项式中步的主要内容,如果未能解决你的问题,请参考以下文章