大數相乘「高精度乘低精度」和「高精度乘高精度」

2021-10-16 08:49:25 字數 1065 閱讀 8280

二、高精度乘高精度

**如下;

由於計算機的儲存位元組有限,所以不能完整表示乙個很大整數的精確值,這時候就得用到其他的方法,稱之為高精度演算法。這裡的高精度乘法主要指按位模擬乘法,實際上就是模擬乘法的過程,也就是筆算的過程。

高精度乘低精度,即乙個大數與乙個小於10000的數相乘,大數使用字串來進行儲存,較小的數使用int型別來儲存就可以。

#include

using

namespace std;

//c = a * b;a是大數,b使用int型別儲存

vector<

int>

mul(vector<

int>

&a,int b)

while

(c.size()

>

1&&c.

back()

==0) c.

pop_back()

;//去除前導0

return c;

}int

main()

c[i + j]

+= a[i]

* b[j]

;

這一行**,就是結果和兩個相乘的數的對應的關係,先一位位的乘得到結果,最後再來統一處理進製。

#include

using

namespace std;

vector<

int>

mul(vector<

int>

&a,vector<

int>

&b)}

int t=0;

for(

int i=

0;isize()

;i++

)while

(c.size()

>

1&&c.

back()

==0) c.

pop_back()

;return c;

}int

main()

大數相除「高精度除低精度」和「高精度除高精度」

二 高精度除高精度 採用計算機做高精度除法時,模擬日常除法的步驟。但計算機不可能做 試商 這時,我們可以採用減法來模擬 試商 的過程。演算法的步驟如下 1 將除數移動和被除數對齊,位數不夠時,補0。2 利用被除數減去除數,一直減到被除數小於除數,減的次數,就是 試商 的結果,每移動一次。3 重複上述...

高精度乘高精度

c a b a b均是高精度數 比如a 156,b 3,求a b 很容易知道答案是468,怎樣算的呢?首先讓3 6 18,然後向進一位,並且這位只保留8 讓3 5 進製1 16,然後向前進一位,並且這位只保留6 讓3 1 進製1 4,此時不向前進製,保留4 所以最終答案是468 通過這個例子我們再來...

高精度乘高精度

思路 用vector表示大整數,整數的低位存在陣列索引的低位 a x b c其中c的每一位 如第3位 是由a和b的相應位相乘累加,處理後得到 如 1 2,2 1 include using namespace std const int demical 10 void input string s,...