1. 程式人生 > >高精度基礎3:a*b問題1

高精度基礎3:a*b問題1

專題連結:高精度題表  

題目大意:

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 因為數位對齊,從個位開始,所以要反向輸出。

====================================================================

思路看懂了嗎?彆著急,還有很多細節處理要學習,下面是程式碼和解釋