多項式求逆,多項式取模,多項式開方 學習筆記
阿新 • • 發佈:2019-02-10
前言
還記得上個學期tututu跟我提過多項式的很多操作,還有一些優化常數的奇技淫巧,然而那個時候我一臉懵逼。最近幾天無所事事,去洛谷做比賽又整天被吊著打,閒暇之餘就想著學一下多項式的幾個基本操作。
其實一開始我是想學CZT的,根據myy的論文它能把BZOJ3992那題優化到。然而它的應用面不廣我就很功利地沒有學。還有如何用兩次DFT求實序列的卷積等等。至於多項式牛頓迭代法,生成函式之類的,等我補完高數再回來學吧。說不定以後會填這些坑
多項式求逆,取模及開方應該算是多項式最為常見的應用,主要配合生成函式,常係數線性齊次遞推優化一起用。雖然已經有很多dalao們寫過詳細的筆記,不過這些演算法的題目比較少,我怕太久沒寫就忘了,所以還是自己寫(shui)一篇QAQ。
多項式求逆:
定義:
給出多項式,現要求一個多項式,使得:
為什麼要模?如果不在模意義下定義逆元,除非只有常數項,否則根據二項式定理,有無窮多項。
模,換句話說就是把多項式的n次方及更高次項截斷。
暴力:
考慮如何暴力求逆。
令。由於,可得為的逆元。又因為,可以解得。依此類推,即可解出至。解到即可停止,因為求逆在模意義下進行。
同時我們可以看出,多項式是否存在逆元,只取決於是否有逆元,因為每次求的時候,分母的位置總是。在下面的演算法中,同樣可以證明這一點。
倍增:
為了方便,下面假設。如果實際操作中n不是2的冪,像FFT那樣將n強行增大到2的冪即可。如果n=1,直接求的逆元即可。
假設已經求出多項式,使得:
因為,所以