1532 高精度練習之乘法

2021-08-13 09:26:02 字數 1237 閱讀 6504

鏈結在這兒

a和b的位數不超過500位!!天哪,這該怎麼辦,即使用un

sign

edlo

nglo

ng最多也只有20位。

寫題要看標題啊,兄dei!高精度乘法

高精度乘法又可稱為大數乘法,此時我們就不能抱著慣性思維去用整型儲存這兩個數。

我們只能抱string的大腿了(抱緊)

我們先宣告兩個字串變數st

r1,s

tr2 儲存輸入的數字、兩個長達500的陣列a[

],b[

] 和乙個長達1000的陣列an

s 來儲存最終的結果。

//為什麼長度是1000?很簡單,乙個m位數乘乙個n位數,結果只可能是m+n或m+n-1或m+n-2位數。

然後把兩個字串一位一位拆解,然後逆序儲存在相應的陣列中。

//逆序的原因是為了計算方便。

//注意字元型到整型的轉化!!

開始計算啦

我們應用乘法原理,用乙個乘數的

1...

n 位分別乘另乙個乘數的

1...

m 位,並將結果存入合適的位置。

//合適的位置在哪呢?你自己找吧嘿嘿嘿

每一次相乘時,得到的是未進製的結果。滿十進位,所以an

s[i+

1]=a

ns[i

]/10;

同時an

s[i]

%=10;

此時我們得到了最終的結果,但數字的順序是倒著的,所以我們要逆序輸出即可。

且慢

最終倒過來的結果開頭的數可能會有

0 ,所以還需進一步處理,取開頭不為

0的那一位開始輸出,這裡可以用乙個wh

ile 迴圈,找出不為

0 的那個數的索引值,然後開始輸出即可。

是不是很簡單呢,hhhhh

學會了這個,你就可以編寫乙個異常生猛的計算器了,再大的數字也不用擔心啦!

高精度練習之乘法

高精度練習之乘法 問題描述 description 給出兩個正整數a和b,計算a b的值。保證a和b的位數不超過500位。輸入描述 input description 讀入兩個用空格隔開的正整數 輸出描述 output description a b的值 高精度乘法 include includeu...

天梯 高精度 3117 高精度練習之乘法

題目描述 description 給出兩個正整數a和b,計算a b的值。保證a和b的位數不超過500位。輸入描述 input description 讀入兩個用空格隔開的正整數 輸出描述 output description 輸出a b的值 樣例輸入 sample input 3 12 樣例輸出 s...

3117 高精度練習之乘法

題目描述 description 給出兩個正整數a和b,計算a b的值。保證a和b的位數不超過500位。輸入描述 input description 讀入兩個用空格隔開的正整數 輸出描述 output description 輸出a b的值 樣例輸入 sample input 3 12 樣例輸出 s...