BZOJ2179 FFT快速傅利葉 FFT

2022-09-14 16:18:21 字數 1426 閱讀 4090

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

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

輸出一行,即x*y的結果。13

412資料範圍:

n<=60000

fft模板題,做的時候注意處理一下進製和前導零就好

1 #include2 #include3 #include4 #include5

#define n (240000+100)

6using

namespace

std;

7double pi=acos(-1.0);8

struct

complex915

}a[n],b[n];

16int n=-1,m=-1

,t,fn,l,r[n];

17char

ch;18

19 complex operator + (complex a,complex b)

20 complex operator - (complex a,complex b)

21 complex operator * (complex a,complex b)

22 complex operator / (complex a,double b)

2324

void fft(int n,complex *a,int

opt)

2540}41

}42if (opt==-1) for (int i=0; in;43}

4445

intmain()

4655

for (int i=0; i<=t; ++i)

5662

if (m==-1) m=0;63

if (n==-1) n=0

;64 fn=1;65

while (fn<=n+m) fn<<=1, l++;

66for (int i=0;ii)

67 r[i]=(r[i>>1]>>1) | ((i&1)<<(l-1

));68

69 fft(fn,a,1); fft(fn,b,1

);70

for (int i=0;i<=fn;++i)

71 a[i]=a[i]*b[i];

72 fft(fn,a,-1

);73

for (int i=n+m;i>=1;--i)

7478

int p=0;79

while ((int)(a[p].x+0.5)==0 && p;

80for (int i=p;i<=n+m;++i)

81 printf("

%d",(int)(a[i].x+0.5

));82 }

BZOJ 2179 FFT快速傅利葉(FFT)

description 給出兩個 n 位 10進製整數 x 和 y,你需要計算x y input 第一行乙個正整數 n 第二行描述乙個位數為 n的正整數 x 第三行描述乙個位數為 n的正整數 y n 60000 output 輸出一行,即x y 的結果。sample input1 3 4sample...

BZOJ 2179 FFT快速傅利葉

description 給出兩個n位10進製整數x和y,你需要計算x y。題目分析 fft裸題用來快速計算高精度的乘法,從n 2變成了n。其實不會,隨便抄了乙個模板。以後再慢慢學。include using namespace std const double pi acos 1.0 int rev...

BZOJ2179 FFT快速傅利葉

標籤 fft 題目傳送門 description 給出兩個n位10進製整數x和y,你需要計算x y。input 第一行乙個正整數n。第二行描述乙個位數為n的正整數x。第三行描述乙個位數為n的正整數y。output 輸出一行,即x y的結果。sample input 1sample output 12...