C 大數乘法

2021-07-13 01:29:20 字數 1141 閱讀 5184

大資料乘法,兩個或者以上的大的資料相乘。

例如:

輸入:987654321 123456789

輸出:121932631112635269

大資料乘法主要用到的原理就是小時候學的豎式乘法。

實現**的關鍵點有兩個:

1、

for (int i = 0; i

< lena; i++)

}

這裡假設a[i]、b[j]是輸入的兩個數,lena和lenb分別為他們的長度。

分析下**,設a=45,b=23。即a[0]=4,a[1]=5;b[0]=2 ,b[1]=3。

則i = 0時pres[1] = 4 * 2 = 15,pres[2] = 4 * 3 = 12

i = 1時 pres[2] = 12 + 5 * 2 = 22,pres[3] = 15

2、

pres[i - 1] +=pres[i] / 10;

pres[i] %= 10;

第一行**是進製,第二行**是取個位數。

這時,對15進製就是進1,取個位5。即pres[2] = 22 + 1,pres[3] = 5。

以此類推。

以下是完整**:

#include

#include

using

namespace

std;

int main()

}for (int i = lena + lenb - 1; i >= 0; i--)

}int i = 0;

while (pres[i] == 0)

char *lastres = (char*)malloc(sizeof(char)*(lena + lenb));

int j;

for (j = 0; j < lena + lenb; j++, i++)

lastres[j] = '\0';

cout

<< lastres << endl;

return

0;}

C 大數乘法

高精度乘法運算題 目描述 給定兩個位數不 超過100 位的正整數 求它們的乘積。輸入描述 輸入檔案中包含 多個測試數 據。每個測試數 據佔兩行,分別為乙個正整 數,每個正整數的位 數不超過100 位。輸入 資料一直到檔案尾 輸 出描述 對輸入文 件中的每個測 試資料,輸出 其中兩個正整 數的乘積。樣...

大數乘法(C )

首先說一下乘法計算的演算法 同樣是模擬人工計算時的方法。從低位向高位乘,在豎式計算中,我們是將乘數第一位與被乘數的每一位相乘,記錄結果之後,用第二位相乘,記錄結果並且左移一位,以此類推,直到計算完最後一位,再將各項結果相加,得出最後結果。計算的過程基本上和小學生列豎式做乘法相同。為程式設計方便,並不...

c 高精度乘法(大數乘法)

對於計算機無法用普通資料型別 如 longint 表示的大整數進行乘法運算,稱為高精度乘法。高精度乘法主要包括以下幾個要求及過程 1 為了獲取輸入數字的每一位的值,包括個位,十位等,輸入整型的資料是無法滿足的,因此,輸入資料必須為字串形式。2 字串轉整型,儲存每一位值於陣列中 3 高精度乘法,重點!...