數的長度為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 ...