51nod 1028 大數乘法v2

2022-02-27 09:24:12 字數 1517 閱讀 1121

基準時間限制:2 秒空間限制:131072 kb分值:80難度:5級演算法題

給出2個大整數a,b,計算a*b的結果。

input

第1行:大數a

第2行:大數b

(a,b的長度 <= 100000,a,b >= 0)

output

輸出a * b
input示例

123456

234567

output示例

28958703552
analysis分析

壓位優化然後就可以過了

考驗碼力

末了,ccz:你要再加個分治優化嗎

qwq不會寫實現啊

先留個坑!

大整數乘法-分治優化

code**

1 #include2 #include

3 #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()

qwq

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