超級大數乘法

2022-08-05 13:42:14 字數 551 閱讀 5247

問題描述

求兩個不超過 200 位的非負整數的積。

輸入資料

有兩行,每行是乙個不超過 200 位的非負整數,沒有多餘的前導0。

輸出要求

一行,即相乘後的結果。結果裡不能有多餘的前導 0,即如果結果是342,那麼就不能

輸出為0342。

輸入樣例

輸出樣例

解題思路

在下面的例子程式中,用 unsigned an1[200]和unsigned an2[200]分別存放兩個乘數,用

aresult[400]來存放積。計算的中間結果也都存在aresult 中。aresult 長度取400 是因為兩個

200 位的數相乘,積最多會有400 位。an1[0], an2[0], aresult[0]都表示個位。

計算的過程基本上和小學生列豎式做乘法相同。為程式設計方便,並不急於處理進製,而將

進製問題留待最後統一處理。

總結乙個規律,即乙個數的第i 位和另乙個數的第j 位相乘所得的數,一定是要累加到

結果的第i+j 位上。這裡i, j 都是從右往左,從0 開始數。

大數加法,大數乘法

include include include typedef struct node pnode 函式宣告 int multiply char strmultipliera,char strmultiplierb,char strrst pnode initlist char strmultipl...

大數問題 大數加法 與 大數乘法 最簡單大數乘法

大數加法很簡單,大叔乘法只是以大數加法為基礎的,光從難度來說,兩者差不多。先舉乙個簡單的例子 所以乘法就是每一位個位數相乘再乘以多少次方就可以了,這個多少次就是兩者的陣列位置的索引相加。看看關鍵 for int i 0 i alen i else result plus result,c heigh...

大數乘法(二)

首先獲取輸入的乘數 a 與被乘數 b 字串,按一般乘法運算過程,先是a的最後一位數字與b的最後一位數字相乘,接著a中用於相乘的數下標遞減,直到a中所有數字與b最後一位都相乘過,儲存結果後再遞減b中的用於相乘的數字的下標,迴圈下去,直到b中每一位數都與a所有數相乘完。在這個過程中,怎麼遍歷出填放結果的...