多項式乘法運算 NTT 數論變換 實現

2021-07-16 22:58:03 字數 1154 閱讀 9310

多項式乘法 

之前用fft交了乙個無限wa,懷疑是精度有問題然後就轉向ntt。

關於fft和ntt力薦這兩篇吼文章,講得太吼了!

塔萌講得很好了,我就存個這個模板。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int maxn = 1

<< 18;

//const int maxm = (int)(log(maxn))+3; //夠用即可

const

int maxm = 23;

const

int mod = (479

<<21)+1; //即質數 1004535809

const

int g = 3; //g^k(k=0,1...mod-2)%mod的值互不相同

/*關於ntt的模數,這裡寫兩個

模數 (479<<21)+1 = 1004535809 原根g = 3,maxn可以開到1<<21

模數 998244353 (uoj模數) 原根g = 3, maxn可以開到1<<23

*/ll quick_pow(ll a, ll b)

b >>= 1;

base *= base;

base %= mod;

}return res;

}ll omg[maxm+1];

void calcomg()

}class ntter

if(j < k)j += k;}}

void ntt(bool dntt = false)}}

if(dntt)

}void mul(ntter &o)

};ntter x, y;

int main()

多項式乘法

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld et reo 吃完了元宵,又開始思考數學問題了。這次他拿了兩個多項式 p mathscrp 和 q mathscrq 他知道這兩個多項式的乘積也是乙個多項式,但他不...

多項式乘法

l1和l2是兩個帶頭結點的單鏈表表示的多項式,編寫演算法計算兩個多項式的乘積,運算結果仍用單鏈表進行儲存 include using namespace std typedef struct lnode lnode,linkedlist 查詢計算結果應該插入的位置 param l 鍊錶的頭結點指標 ...

洛谷P3803 模板 多項式乘法 NTT

題目傳送門 給定乙個n次多項式f x 和乙個m次多項式g x 請求出f x 和g x 的卷積。輸入格式 第一行2個正整數n,m。接下來一行n 1個數字,從低到高表示f x 的係數。接下來一行m 1個數字,從低到高表示g x 的係數。輸出格式 一行n m 1個數字,從低到高表示f x g x 的係數。...