大資料乘法,兩個或者以上的大的資料相乘。
例如:
輸入:987654321 123456789
輸出:121932631112635269
大資料乘法主要用到的原理就是小時候學的豎式乘法。
實現**的關鍵點有兩個:
1、
這裡假設a[i]、b[j]是輸入的兩個數,lena和lenb分別為他們的長度。for (int i = 0; i
< lena; i++)
}
分析下**,設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 高精度乘法,重點!...