總結 多項式的運算

2022-01-10 02:09:03 字數 2906 閱讀 9156

多項式的小總結

這些運算都是在模意義下進行的運算,但多項式的取模運算與整數的取模運算有些不同。

多項式對 \(x^n\) 取模的意思是捨棄 \(x^n\)以及更高次的部分。

\[a(x)b(x)\equiv 1\pmod

\]

遞迴版:#include //遞迴

#include using namespace std;

const int maxn=4e5+10,mod=998244353,g=3,gn=332748118;

int p=1,bit,inver;

int f[maxn],h[maxn],c[maxn],rev[maxn];

inline int power(long long a,int x)

return ans;

}inline void ntt(int *t,int len,int inv)

inver=power(p,mod-2);

for(int i=1;i>1]>>1)|((i&1)<<(bit-1));

} for(int i=0;i遞推版:#include //遞推

#include using namespace std;

const int maxn=4e5+10,mod=998244353,g=3,gn=332748118;

int p=1,bit,inver;

int f[maxn],h[maxn],t[maxn],rev[maxn];

inline int power(long long a,int x)

return ans;

}inline void ntt(int *t,int len,int inv)

inver=power(p,mod-2);

for(int j=0;j#include using namespace std;

const int maxn=4e5+10,mod=998244353,g=3,gn=(mod+1)/g;

int p=1,bit,inver;

int f[maxn],h[maxn],c[maxn],rev[maxn];

inline int power(long long a,int x)

return ans;

}inline void ntt(int *t,int len,int inv)

inver=power(p,mod-2);

for(int i=1;i>1]>>1)|((i&1)<<(bit-1));

memcpy(c,f,deg*4);

ntt(h,p,1);ntt(c,p,1);

for(int i=0;i??怎麼亂入啊? 牛頓迭代也是多項式運算中比較重要的一部分。

#include #include #include using namespace std;

const int maxn=4e5+10,mod=998244353,g=3,gn=(mod+1)/g;

int p=1,bit,inver;

int f[maxn],h[maxn],c[maxn],rev[maxn];

int h_ln[maxn],c_e[maxn],f_inv[maxn];

inline int power(long long a,int x)

return ans;

}inline void ntt(int *t,int len,int inv)

inver=power(p,mod-2);

for(int i=1;i>1]>>1)|((i&1)<<(bit-1));

memcpy(c,f,deg*4);

ntt(h,p,1);ntt(c,p,1);

for(int i=0;i>1);

memset(h_ln,0,sizeof(h_ln)); //清零,避免爆ntt

getln(h,h_ln,deg);

memcpy(c_e,f,deg*4);

ntt(c_e,p,1),ntt(h,p,1);ntt(h_ln,p,1);

for(int i=0;i#include #include namespace io

inline int read()

while(isdigit(ch))

return x*s; }}

using namespace std;

using io::read;

const int maxn=4e5+10,mod=998244353,g=3,gn=(mod+1)/g,inv_2=(mod+1)/2;

int p=1,bit;

int f[maxn],h[maxn],c[maxn],rev[maxn];

int h_inv[maxn],c_r[maxn];

inline int power(long long a,int x)

return ans;

}inline void ntt(int *t,int inv)

for(int i=1;i>1]>>1)|((i&1)<<(bit-1));

memcpy(c,f,deg*4);

ntt(h,1),ntt(c,1);

for(int i=0;i>1);

p=1,bit=0;

memset(h_inv,0,sizeof(h_inv)); //清零

memset(c,0,sizeof(c));

getinv(h,h_inv,deg);

memcpy(c_r,f,deg*4);

ntt(h,1),ntt(c_r,1),ntt(h_inv,1);

for(int i=0;i——2023年2月8日

多項式運算

多項式運算 順序棧實現 在demo1.cpp基礎上增加 彌補異常處理 以及多位數運算缺點 include include include define ok 1 define error 2 define overflow 1 define ini size 100 typedef int elem...

VC多項式運算

多項式運算主要是係數和指數的處理,本文用乙個簡單的例子實現該功能。首先,新建控制台應用程式 然後,新建類 標頭檔案 polynomial.h inte ce for the cpolynomial class.if defined afx polynomial h 06b9bccd 1789 483...

多項式運算封裝

update on 21.12.30 新增了polyeva 修補了polymod處多測時可能產生的 bug。update on 22.2.7 重 寫 前一版太醜了 改為完全封裝版本 使用std vector存放多項式係數,運算在命名空間polynomial 裡 實現的並不優秀,但應該很穩 霧 全部提...