bzoj 3527 快速傅利葉變換

2021-07-28 03:03:21 字數 2169 閱讀 3997

給出n個數qi,給出fj的定義如下: fj

=∑ii⋅qj

(i−j

)2−∑

i>jq

i⋅qj

(i−j

)2令ei=fi/qi,求ei.

第一行乙個整數n。

接下來n行每行輸入乙個數,第i行表示qi。

n≤100000,0 < qi < 1000000000

n行,第i行輸出ei。與標準答案誤差不超過1e-2即可。

5 4006373.885184

15375036.435759

1717456.469144

8514941.004912

1410681.345880

-16838672.693

3439.793

7509018.566

4595686.886

10903040.872

閱讀題目,發現題目中給出的ei=fi/qi的條件可以化簡,即: ej

=∑ii(i−

j)2−

∑i>jq

i(i−

j)2

這個式子很容易讓我們將它與卷積聯絡起來,我們可以嘗試構造兩組多項式,使其乘積後係數中包含ei,於是: a(

x)=q

0⋅x0

+q1⋅

x1+q

2⋅x2

+⋯+q

n−1⋅

xn−1

+0⋅x

n+0⋅

xn+1

+…0⋅

x2∗n

−3 b

(x)=

−1(n

−1)2

⋅x0+

−1(n

−2)2

⋅x1+

⋯+−1

(−1)

2⋅xn

−1+0

⋅xn+

112⋅

xn+1

+⋯+1

(n−2

)2⋅x

2∗n−

3+1(

n−1)

2⋅x2

∗n−2

這樣令c(x)=a(x)

× b(x),c(x)的第n-1~2*n-2項的係數即為所求!

如果有讀者不清楚fft或者卷積的,可以參考我的部落格:快速傅利葉變換(fft)

#include

#define pi acos(-1.0)

#define maxn 500010

//#define debug

using

namespace

std;

int n,m,l=0;

int rev[maxn];

struct complex

complex(double real,double imag):real(real),imag(imag) {}

complex operator + (const complex rhs)

complex operator - (const complex rhs)

complex operator * (const complex rhs)

};complex a[maxn],b[maxn];

void pre()

void fft(complex a,int n,int flag)}}

if(flag==-1)

for(int i=0;iint main()

for(int i=0;i1;++i) b[i].real=-1.0/(n-i-1)/(n-i-1);

for(int i=n;i<2*n-1;++i) b[i].real=1.0/(i-n+1)/(i-n+1);

#ifdef debug

for(int i=0;i<2*n-1;++i) printf("%.4lf ",b[i].real);

#endif

pre();

fft(a,n,1);

fft(b,n,1);

for(int i=0;i<=n;++i) a[i]=a[i]*b[i];

fft(a,n,-1);

for(int i=m/2-1;i1;++i) printf("%lf\n",a[i].real);

return

0;}

bzoj 2194 快速傅利葉變換

請計算c k sigma a i b i k 其中 k i n 並且有 n 10 5。a,b中的元素均為小於等於100的非負整數。第一行乙個整數n,接下來n行,第i 2.i n 1行,每行兩個數,依次表示a i b i 0 i n 輸出n行,每行乙個整數,第i行輸出c i 1 5 3 1 2 4 1...

傅利葉變換與快速傅利葉變換

作為電子資訊專業的學生老說,這個不知道,或者理解不清楚,是十分不應該的,作為乙個學渣,有時候確實是理解不清楚的 1 首先離散傅利葉變換目的 簡單點說 就是將乙個訊號從時域變換到頻域 標準點說 將以時間為自變數的訊號 與 頻率為自變數的頻譜函式之間的某種關係變換 數學描述 對於 n點序列 其中自然對數...

快速傅利葉變換

學習快速傅利葉變化是量子計算中的基礎,查了很多資料,以下鏈結可以作為參考 本部落格部分知識學習於 最後這個裡面有解釋蝴蝶效應是怎麼來的!實用數字訊號處理 dft 離散傅利葉變換 o n2 計算多項式乘法 fft 快速傅利葉變換 o n log n 計算多項式乘法 fntt ntt 快速傅利葉變換的優...