FFT版題 51 Nod 1028 大數乘法

2021-09-03 03:01:17 字數 1494 閱讀 9841

數的長度為105

10^5

105,乘起來後最大長度為2×1

05

2\times10^5

2×10

5由於fft需要把長度開到2

22的次冪,所以不能只開到2×1

05

2\times10^5

2×10

5,會tle(卡了好久,還以為是要壓位)

#include

#include

#include

#include

using

namespace std;

const

int maxn =

400005

;//!!!

const

double pi =

acos(-

1.0)

;struct complex

complex operator+(

const complex &t)

const

complex operator-(

const complex &t)

const

complex operator*(

const complex &t)

const

}a1[maxn]

, a2[maxn]

, w, wn;

char s1[maxn]

, s2[maxn]

;int n, len1, len2, ans[maxn]

;inline

void

change

(complex arr,

int len)

}inline

void

fft(complex arr,

int len,

int ***)}}

if(*** ==-1

)for

(int i =

0; i < len;

++i)

arr[i]

.r /

= len;

}inline

void

fft(complex arr,

int len,

int ***)

intmain()

int i;

for(i =0;

!ans[i]

&& i < len1+len2-1;

++i);if

(i == len1+len2-1)

putchar

('0');

else

while

(i < len1+len2-1)

printf

("%d"

,ans[i++])

;//此處不能用putchar

//因為我ans[0]沒有向前進製,所以要用%d輸出

putchar(10

);}

51nod 1028 大數乘法v2

基準時間限制 2 秒空間限制 131072 kb分值 80難度 5級演算法題 給出2個大整數a,b,計算a b的結果。input 第1行 大數a 第2行 大數b a,b的長度 100000,a,b 0 output 輸出a binput示例 123456 234567 output示例 289587...

51NOD1028 大數乘法 V2

給出2個大整數a,b,計算a b的結果。a,b的長度 100000,a,b 0 把大整數 a看做乙個次數界為le na的多項式a x 其中x 10 同樣,把 b看做乙個次數界為le nb的多項式b x 其中x 10 然後套上快速傅利葉變換。include include include includ...

51nod1028 大數乘法 V2 問題 壓位

本來是應該用fft的,但是我不會.於是就直接把每六位壓成一位上高精乘就好啦。不過注意由於取模操作常數巨大,不能每次都執行,應該是全部做完從後往前掃一遍進製。然後就o len2 過2萬 1 include2 include3 include4 typedef long long ll 5 using ...