最近51nod比賽最後一題,我列出母函式以後發現要求m<=10^16項係數,於是現在來寫一下這個問題。
假設f(x)=f(x)*g(x)+1。
經過詢問黈力,大致明白了多項式取模解決線性遞推式的方法。實際上,若g(x)次數為n,那麼可以看成x^(n+1)=g(x)的乙個方程,然後求x^m的值的問題,那麼這相當於多項式快速冪,直接用多項式取模解決即可。
一下是乙個另類的做法。(不保證正確)
(根據感性理解),對於任意乙個數p,f(x)關於f(x-p),f(x-p-1),...,f(x-p-n)的轉移應該都是一樣的。
考慮f(x)的x^k項係數,實際上可以看成x^t->x^(k+t)的乙個轉移(可以將<0的項看成是0)。
那麼考慮現在已經求出了x^(2^i)~2^(2^i+2*n)的答案,再對x^(2^i)~(x^2^i+n)做乙個卷積,就可以求出x^(2^(i+1))~(x^(2^(i+1))+n)項的答案,然後考慮通過前n項求出它接下來的n項。設前n項為q(x),新的若干項為t(x),那麼首先求出q(x)*g(x)的》n的多項式,然後/x^n,設得到的r(x),那麼就有:
t(x)=t(x)*g(x)+r(x)
那麼可以預處理(1-g(x))^(-1),然後與r(x)卷積後模x^n,得到t(x)
這樣就可以預處理x^(2^i)~x^(2^i+n)的係數,同樣就可以得到x^m了。
考慮到實現難度。。並不推薦這種做法。
多項式取模 模板
最近想寫一下多項式取模的模板,然而找不到模板題。於是上網找了個高精度除法題,寫完之後才發現高精度除法和多項式取模是不一樣的qaq。前者要求不能出現負數,為此某些位置可以暫時為0,將餘數拉到後面 而多項式取模則要求最高項一定要剩餘0。於是我把程式隨便改了改,先扔在這兒,以後備忘。我寫的是實數 fft ...
多項式除法 取模
除法 取模 設 n 次多項式 f x 和 m 次多項式 g x 求 n m 次多項式 q x 和 m 1 次多項式 r x 滿足 f x g x q x r x 於是我們有 f frac g frac q frac r frac 兩遍同乘 x n x nf frac x mg frac x q fr...
洛谷P4723 模板 線性遞推(多項式取模)
傳送門 考慮說要求乙個 a n i 1 kan if ia n sum a f i an i 1k an i fi 寫成矩陣的形式就是 a n an 1 f a0 fn a n a f a 0f n an an 1 f a0 fn實際上f nf n fn最後就是乙個長度為k kk的向量 滿足a n ...