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=ana
n−1
....
a0,就可以看做乙個f(x
)=an
xn..
.+a0
f(x)=a_nx^n...+a_0
f(x)=a
nxn
...+
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的正整...