C++大整數運算筆記 — 加減

Sharon Peng
3 min readJul 15, 2019

--

HugeInt Operator 相信學校老師如果出過這個難題一定讓許多人頭痛,我當初寫這個程式寫了差不多快一個禮拜吧(筆者我資質不是很好),而且還寫了很多行,到後面感覺是幸運之神幫助我寫出來的呢~

進入正題大整數運算是什麼,就是將很大很大的數去做加減乘除,舉個例子:9999999999999+9999999999999 已經超出long long 的範圍的運算,所以我們不能用一般+ — * / 做運算。那我們要怎麼運算呢?

陣列是一個很棒的方法!

首先,我們先把每一個數字拆開,分別放到每一個陣列當中

由於這樣是我們一般的寫法與算法,但事實上在電腦中的運算我們會有進位的狀況,在加法中可能可以適用但是減法乘法除法就不太行了,所以我們想到用「倒著存的方式」就可以解決這個方法囉~

下方圖片,就是一個很好的例子,我們把個位數放到最前面,然後從左邊開始一個一個加,有進位的話,可以直接把進位數放到下一個陣列。最後再把答案倒回來後,就是我們的答案囉!2469135780

下方有我的程式碼來當作參考。

再來,就換到減法的部分,他也類似加法,只是一個是要進位,一個要借位。我認為這個借位的方式也是非常有趣,當不夠減的時候呢,我們一樣把它減出來,就算有負號也沒關係,減成負號的話,我們把他加10,然後他的下一位要減1,這樣一來我們的借位就完成了!是不是很神奇呢?我當初聽到這個方法也是覺得超級酷的~

下方有我的程式碼。

下方有一個copyinn,是因為不想要直接改掉原本的數字。用另一個變數來代替。

那這次就先講兩個,下次再一併把乘法跟除法講完吧~再會

--

--

Sharon Peng
Sharon Peng

No responses yet