大數乘法演算法

2021-08-15 03:20:58 字數 1167 閱讀 9448

將大數當做字串進行處理,也就是將大數用十進位制字元陣列進行表示,然後模擬人們手工進行「豎式計算」的過程得到乘法的結果。

#include

using

namespace

std;

#define maxn 100

string multiply(char line1, char line2)

else

if (number == '-' && len1 == 1)

else

if (number > '9' || number < '0')

}else

}if (number != '-')

}for (int i = 0; i < len2; i++)

else

if (number == '-' && len2 == 1)

else

if (number > '9' || number < '0')

}else

}if (number != '-')

}if (line1isnegativenumber)

if (line2isnegativenumber)

memset(result, 0, sizeof(short) * (maxn - 1));

for (int i = 0; i < len1; i++)

}int carry = 0;

for (int i = 0; i <= len; i++)

int reallen = 0;//實際的計算結果長度

for(int i = len - 1; i >= 0; i--)

}if (line1isnegativenumber ^ line2isnegativenumber)

char *line = new

char[reallen + 1];

if (reallen == 0)

else

for (; i < reallen; i++)

line[reallen] = '\n';

}return line;

}int main(int argc, const

char * argv)

}return

0;}

參考

演算法 大數加法和大數乘法

大數加法 以字串的形式讀入兩個數字,編寫乙個函式計算它們的和,以字串形式返回。字串長度不大於100000,保證字串僅由 0 9 這10種字元組成 public string solve add string s,string t else if j 0 else int sum x y m m su...

高精度演算法 大數乘法

由於相乘的兩個數答案很大超過了longlong或者unsigned longlong,就需要使用大數乘法。給定兩個正整數a和b,請你計算a b的值。輸入格式 共兩行,第一行包含整數a,第二行包含整數b。輸出格式 共一行,包含a b的值。資料範圍 1 a的長度 100000 1 b 10000 輸入樣...

大數乘法問題及其高效演算法

求 1234567891011121314151617181920 2019181716151413121110987654321 的乘積結果分治乘法 最簡單的是karatsuba乘法,一般化以後有toom cook乘法 快速傅利葉變換fft 為了避免精度問題,可以改用快速數論變換fntt 時間複雜...