FFT的乙個小技巧

2021-09-02 07:58:00 字數 1375 閱讀 3851

蒟蒻的fft學習筆記in

對於一般的,我們將兩個多項式相乘,都是開兩個虛數陣列,a,b

a,ba,

b,先將每個多項式的每個係數分別存入兩個陣列的實部,然後先將a

aa做fft變換,再將b

bb做fft變換,然後兩個點值表示式相乘,然後再將其fft

fftff

t變換回來,最後答案就是陣列的實部。

這樣是做了3次nlo

gn

nlogn

nlog

n的fft變換。

但是有乙個小技巧,我們對於兩個多項式,其實只用開乙個虛數陣列,將第乙個多項式 的係數存入這個陣列的實部,將第二個多項式的係數存入這個陣列的虛部,然後先對其進行fft變換,然後自己乘自己後再逆變換回來,虛部除以2n2n

2n便是最後的答案。

此時,我們可以發現,只做了2次nlo

gn

nlogn

nlog

n的fft變換。

目前看了看這篇部落格,裡面講了原理,寫的還不錯,貼個鏈結orz。

上份**:

模板

luogu fft 模板題

#include

#include

#include

#include

#define db double

using

namespace std;

const

int m=

3e6+10;

const db pi=

acos(-

1);struct complex

complex

(db a,db b):x

(a),

y(b)

}a[m]

;complex operator+(

const complex &a,complex &b)

complex operator-(

const complex &a,complex &b)

complex operator*(

const complex &a,complex &b)

int r[m]

;void

dft(complex *a,

int n,

int f)}}

if(f==-1

)for

(int i=

0;i<=n;i++

)a[i]

.y/=(2

*n);

}void

fft(complex *a,

int n,

int m)

int n,m,x;

intmain()

return0;

}

乙個小技巧

下午去牙科看牙,順便幫我媽把鞋上個鞋絆。修鞋的老太太慈眉善目,於是跟她攀談起來。我問她,您看這鞋怎麼樣啊?老太太瞅瞅鞋,笑笑不說話。我又說,這是在沂蒙大樓專櫃買的,打折處理的 款,也不知道質量怎麼樣。老太太嗯嗯幾聲,還是不言語。一邊修著鞋,老太太看我態度還算虛心,就跟我傳授了經驗。大意就是,專櫃處理...

VIM ctags的乙個小技巧

vim可以使用ctags製作的tags檔案來瀏覽程式原始檔。問題是,當原始檔存放在目錄樹 也就是所謂的source tree 的時候,該怎麼辦呢?在預設情況下,ctags只會處理當前目錄裡的原始檔,而且vim也只會參考當前目錄的tags檔案。這時候,如果當前目錄裡的原始檔引用了其他目錄裡的定義,那麼...

tomcat的乙個小技巧

tomcat進入manage管理介面的方法.1,進入到tomcat檔案加然後進去找到conf資料夾裡面的tomcat user.xml檔案 2.用記事本開啟。3.要想進入到manage的管理頁面,首先新增乙個管理員角色 然後寫上你想要輸入的使用者名稱或者密碼即可 這樣就可以用從管理的manage裡面...