P4245 【模板】任意模数多项式乘法
生活随笔
收集整理的這篇文章主要介紹了
P4245 【模板】任意模数多项式乘法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
P4245 【模板】任意模數多項式乘法
https://www.luogu.com.cn/blog/AzusaCat/solution-p4245
首先這類問題指的是對于一個非NTT模數,我們如何計算多項式乘法,對于NTT不容易找到單位根,對于FFT又會爆精度。
方法1:三模數NTT
尋找三個大模數最后CRT合并即可
方法2:MTT
將系數拆分為兩部分,分別是M的倍數和余數,然后我們只需要對其分別處理即可,但是這樣暴力的做一共需要7次FFT復雜度太高,我們通過一些數學技巧可以優化到4次。
首先DFT時可以發現虛部是空的,我們可以將另一個多項式放在虛部,然后利用共軛求解共軛的值,然后就可以一次求出兩個多項式的點值,所以可以將4次DFT變為2次。
然后IDFT時,發現點值最后轉化為系數時虛部也是空的,所以我們可以將兩個多項式加在一起IDFT,可以發現如果給系數乘i,那么點值對應乘i,所以對應的虛部點值不會影響到實部的系數。
代碼細節:
floor是向下取整
ceil是向上取整
強制轉換是向0取整
所以我們要四舍五入需要判斷正負,對于負數-0.5后取整,對于正數+0.5后取整。
總結
以上是生活随笔為你收集整理的P4245 【模板】任意模数多项式乘法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我80斤,怎样才能瘦到60斤呢
- 下一篇: 吃减肥药拉油是脂肪吗