基準時間限制:2 秒空間限制:131072 kb分值:80難度:5級演算法題
給出2個大整數a,b,計算a*b的結果。
input
第1行:大數aoutput第2行:大數b
(a,b的長度 <= 100000,a,b >= 0)
輸出a * binput示例
123456output示例234567
28958703552analysis分析
壓位優化然後就可以過了
考驗碼力
末了,ccz:你要再加個分治優化嗎
qwq不會寫實現啊
先留個坑!
大整數乘法-分治優化
code**
1 #include2 #includeqwq3 #include4
using
namespace
std;56
char cval[1000010];7
const
int pow[8] = ;89
int getlen(long
long
x)13
14struct
bignum
1819
void
read()
30 }len = (lenc-sign-1)/6+1
;31 len += 5; while(!val[len-1] && len) len--;
32 val[len] =d;
33 len += 5; while(!val[len-1] && len) len--;
34//
cout << val[0] << endl;
3536}37
38void
print()cout <
4546
void
check()
48long
long d = 0;49
for(int i = 0;i <= len;i++)while(val[len] ||d)len += 5; while(!val[len-1] && len) len--;59}
60};
6162 bignum mul(bignum &a,bignum &b)
69 }c.len = a.len+b.len;
70c.check();
71return
c;72}73
74int
main()
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 ...
FFT版題 51 Nod 1028 大數乘法
數的長度為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 inc...