鏈結在這兒
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...