Re 多項式除法 取模

2021-09-12 04:17:52 字數 1567 閱讀 3199

emmm又是暫無

多項式求逆

還是跟之前一樣顧名思義】

給定乙個多項式f(x),請求出多項式q(x)和r(x),滿足f(x)=q(x)∗g(x)+r(x)

,r項數小於g,係數對998244353取模。

先考慮乙個多項式的反轉操作

就是乙個多項式係數前後調換

定義這個反轉的操作下標加個 r

顯然fr(x)=xnf(1/x)

接著推式子

f(x)=q(x)∗g(x)+r(x)

f(1/x)=q(1/x)∗g(1/x)+r(1/x)

xnf(1/x)=xn-m

q(1/x)∗xm

g(1/x)+xm-1xn-m+1

r(1/x)

fr(x)=qr(x)*gr(x)+xn-m+1rr(x)

所以當fr(x)=qr(x)*gr(x)+xn-m+1rr(x)(mod xn-m+1)

等於fr(x)=qr(x)*gr(x)(mod xn-m+1)

那麼qr(x)=gr(x)*fr(x)-1(mod xn-m+1)

這時求出fr(x)在模xn-m+1即可求出qr(x)

反轉回來就可得q(x)

通過r(x)=f(x)-q(x)∗g(x)

#includeusing

namespace

std;

#define ll long long

#define c getchar()-48inline ll read()

const ll p=998244353,g=3,n=400010

;ll n,m;

ll f[n],g[n],q[n],r[n],inv[n],rev[n],c[n];

ll tmp1[n],tmp2[n];

inline ll ksm(ll a,ll b)

//..快速冪

return

ans;

}inline

void ntt(ll *a,ll n,ll kd)//

ntt日常操作 }}

if(kd==1) return

; ll ny=ksm(n,p-2

); reverse(a+1,a+n);

for(int i=0;ip;

}inline

void cl(ll *a,ll *b,ll n,ll m,ll len,ll w)//

處理 inline

void polyinv(ll *a,ll *b,ll ed)//

遞推版

}inline

void polymul(ll *a,ll *b,ll *c,ll n,ll m)//

計算多項式相乘

inline

void work() //

f=q*g+r ask q,r f,g下標從0--n,0--m

intmain()

posted @

2019-03-07 21:02

1436177712 閱讀(

...)

編輯收藏

多項式除法 取模

除法 取模 設 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...

多項式取模 模板

最近想寫一下多項式取模的模板,然而找不到模板題。於是上網找了個高精度除法題,寫完之後才發現高精度除法和多項式取模是不一樣的qaq。前者要求不能出現負數,為此某些位置可以暫時為0,將餘數拉到後面 而多項式取模則要求最高項一定要剩餘0。於是我把程式隨便改了改,先扔在這兒,以後備忘。我寫的是實數 fft ...

多項式除法

給一n次多項式f x m次多項式g x 求一多項式q x r x 滿足 令f r x 表示函式f x 係數翻轉後的函式 because f x a 0x n a 1x a n therefore f r x a nx n a x a 0 x n a n a frac a 0 frac x nf fr...