FFT快速傅利葉

2021-10-01 12:26:49 字數 1432 閱讀 7967

description

給出兩個n位10進製整數x和y,你需要計算xy。

input

第一行乙個正整數n。 第二行描述乙個位數為n的正整數x。 第三行描述乙個位數為n的正整數y

output

輸出一行,即xy的結果。

資料範圍:

n<=60000

乙個整數x=a

nan−

1...

.a

0x=a_na_....a_0

x=an​a

n−1​

....

a0​,就可以看做乙個f(x

)=an

xn..

.+a0

f(x)=a_nx^n...+a_0

f(x)=a

n​xn

...+

a0​的多項式在x

xx取10

1010

的情況下,那麼兩個大整數相乘就可以理解為兩個多項式的相乘,我們得到大整數之後就把他的形式換成多項式然後套用fft

\text

fft,最後直接按順序輸出每一項的係數即可。

要注意的是最後係數可能會大於10

1010

,但是這時候我們必須要進製。

#include

#include

const

int maxn =

200005

;const

double pi =

acos(-

1.0)

;int

read()

int n,len,flag=

1,g[maxn]

;char s1[maxn]

,s2[maxn]

;struct complex

complex

(double x,

double y):x

(x),

y(y)

complex operator+(

const complex &r)

const

complex operator-(

const complex &r)

const

complex operator*(

const complex &r)

const

}a[maxn]

,b[maxn]

;void

fft(

int len,complex *a,

int ***)

}int

main()

for(

int i=

2*n;i>=

0;i--

)}

快速傅利葉(FFT)

快速傅利葉 更加形象的理解傅利葉變換 大概了解之後 從傅利葉級數到傅利葉變換 太大,只能裁剪為兩張 刨根問底的同學 雷德演算法 輸出序列是按自然順序排列的,而輸入序列的順序則是 位元反轉 方式排列的。也就是說,將序號用二進位制表示,然後將二進位制數以相反方向排列,再以這個數作為序號。如011變成11...

FFT 快速傅利葉演算法 for java

package com.test.test2 public class fft bitreverse i reve double theta,dt 2 3.14159265358979323846 fft n for i 0 i fft n 1 i 用於頻譜顯示的快速傅利葉變換 param real...

2179 FFT快速傅利葉

time limit 10 sec memory limit 259 mb submit 2803 solved 1431 submit status discuss 給出兩個n位10進製整數x和y,你需要計算x y。第一行乙個正整數n。第二行描述乙個位數為n的正整數x。第三行描述乙個位數為n的正整...