注:高精度乘法是應聘中常見的筆試題,主要考察用字串模擬乘法的過程,下面提供乙個比較簡單的版本實現。如果錯誤,請多指教。
如:123 * 23
(1)儲存的時候從個位往前進行儲存。
(2)123的個位(第0位)乘以23得到49(result[0] = 9, result[1] = 4)
(3)123的十位(第1位)乘以23得到460,(result[0 +1] = (4 + 6)% 10, result[1 + 1] = (0 + 4)%10 = 4)
具體可以自己進行一下乘法運算來理解。
// 高精度乘法
#include #include #define n 1000
using namespace std;
int main()
// 每一遍迴圈之後的進製
result[i + len2] += carry;
} int index = len1 + len2;
// 去掉前面多餘的0
while (index > 0 && result[index] == 0) index--;
for (int i = index; i >= 0; i--)
cout << result[i];
cout << endl;
return 0;
}
測試例項:
輸入:
123
23
輸出:
2829
高精度乘法 C
原理 陣列記錄每一位,最後處理進製 計算201 98,則先計算201 8,再計算201 9,逐位相乘。豎式計算。儲存201和98,逆序儲存到陣列裡面。01 2345 6789 1020 0000 0001 2345 6789 8900 0000 00逐位相乘,得到結果放到result陣列裡面,最後處...
c 高精度乘法(大數乘法)
對於計算機無法用普通資料型別 如 longint 表示的大整數進行乘法運算,稱為高精度乘法。高精度乘法主要包括以下幾個要求及過程 1 為了獲取輸入數字的每一位的值,包括個位,十位等,輸入整型的資料是無法滿足的,因此,輸入資料必須為字串形式。2 字串轉整型,儲存每一位值於陣列中 3 高精度乘法,重點!...
高精度減法,高精度乘法
高精度減法 oj資料偏弱如果新增乙個101 2就錯了,下面這一步是為了防止錯誤的 if a aa 0 可能出現第一位的1被借走的的情況,所以加乙個while找第乙個不是0的 while c i 0 i include include include include include include u...