Bzoj2179 FFT快速傅利葉

2022-05-13 15:21:35 字數 1227 閱讀 7406

time limit: 10 sec  memory limit: 259 mb

submit: 3079  solved: 1581

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

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

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

412資料範圍:

n<=60000

fftfft真是精妙,我選擇背**

1 #include2 #include3 #include4 #include5 #include6 #include7

#define pi acos(-1)

8using

namespace

std;

9const

int mxn=(1

<<17)+7

;10 typedef complexcd;

11char

sa[mxn],sb[mxn];

12cd a[mxn],b[mxn];

13int

rev[mxn],c[mxn];

14int n,l=0;15

double fft(cd* a,int

flag)29}

30}31if(flag==-1)for(int i=0;in;32}

33void multi()

34int

main()

40int m=n<<1;41

for(n=1;n1)l++;

42for(i=0;i//

預處理反轉陣列

43 rev[i]=(rev[i>>1]>>1)|((i&1)<<(l-1

));44

}45 fft(a,1);fft(b,1);//

係數表示式轉為點陣表示式

46multi();

47 fft(a,-1);//

點陣表示式轉為係數表示式

48for(i=0;iint)(a[i].real()+0.1

);49

for(i=0;i)

50if(c[i]>=10)

51else

if(!c[i] && i==m-1)m--;

52for(i=m-1;i>=0;i--)printf("%d"

,c[i]);

53return0;

54 }

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...

BZOJ2179 FFT快速傅利葉 FFT

給出兩個n位10進製整數x和y,你需要計算x y。第一行乙個正整數n。第二行描述乙個位數為n的正整數x。第三行描述乙個位數為n的正整數y。輸出一行,即x y的結果。13 412資料範圍 n 60000 fft模板題,做的時候注意處理一下進製和前導零就好 1 include2 include3 inc...

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...