BZOJ 2179 FFT快速傅利葉

2022-08-12 05:54:21 字數 1028 閱讀 7607

超大整數乘法

fft模板題.

把數字看成是多項式,x是10.然後用fft做多項式乘法,最後進製就好了.

注意:1.進製前要把每一位加0.5(或者更小),然後向下取整,應該是浮點數的計算誤差吧...

1 #include 2

using

namespace

std;34

const

int maxn=140000;5

const

double pi=acos(-1.0);6

intlen;

7int

rev[maxn],ans[maxn];

8char

str[maxn];

9struct cp

12 cp operator + (const cp &x) const

13 cp operator - (const cp &x) const

14 cp operator * (const cp &x) const

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

16void brc(int &len)28}

29void dft(cp *a,int n,int flag)42}

43}44if(flag==-1)for(int i=0;in;45}

46void readin(cp *a)

51int

main()

view code

time limit: 10 sec  memory limit: 259 mb

submit: 2567  solved: 1308

[submit][status][discuss]

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

第一行乙個正整數n。

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

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

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

412資料範圍:

n<=60000

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