高精度基礎3:a*b問題1
阿新 • • 發佈:2018-11-07
專題連結:高精度題表
題目大意:
1、給出一個大整數a,一個整數型別b,求a*b;
2、保證 0<b<=10000000;
====================================================================
解題思路:
1、如果您已經理解了高精度的加法和減法,本題應該完全沒有難度;
2、流程還是一樣的:讀入與儲存、型別轉換、數位對齊、模擬豎式計算、反向逐位輸出。
3、高精度*低精度的要點分析:
3.1 如果一個大整數和一個小於1千萬的數字求乘積,就可以使用本篇解題思路;
3.2 因為大整數的基礎儲存中,每一個數位只存一個10以內的數字,10*10000000是不會超出int的範圍的。
====================================================================
詳細分析:
1、讀入+儲存+逆序對齊:
1.1 用 s [ ] 陣列來儲存第一個字串;
1.2 將 s [ ] 陣列的 字串,逆序放入 a [ ] 陣列中,以第一位作為個位,翻轉對齊,求出數位長度na;
1.3 輸入整數型別的 b;
2、模擬豎式計算:
2.1 因為全部數字是翻轉的,所以個位在左邊,最高位在右邊:
2.2 b對 a [ ] 的各數位分別求乘積,直接儲存到 c [ ] 陣列中:
2.3 對 c [ ] 陣列:從左向右,依次進位,得到新的 c [ ] 陣列:
3、反向逐位輸出:
3.1 因為數位對齊,從個位開始,所以要反向輸出。
====================================================================
思路看懂了嗎?彆著急,還有很多細節處理要學習,下面是程式碼和解釋