如何實現大整數相加

2021-10-23 17:13:46 字數 1298 閱讀 9452

題目:給出兩個很大的整數,要求實現程式求出兩個整數之和。

解決思路:

建立兩個整型陣列,陣列長度是較大整數的位數+1。把每乙個整數倒序儲存在陣列中,整數的個位存在陣列下標為0的位置,最高存於陣列的尾部。倒序的目的是為了從左到右訪問陣列的習慣;

建立結果陣列,結果陣列的長度同樣是較大整數的位數+1,+1的目的是給最高位進製預留的;

遍歷兩個陣列,從左到右按照對應下標把元素兩兩相加,相加結果儲存在結果陣列中,需要進製的,把進製的1填到結果陣列的下乙個位置;

把結果陣列的全部元素逆序,去掉首位的0,就是最終的結果。

**實現:

/**

* 大整數相加

* @param bignumbera 大整數a

* @param bignumberb 大整數b

* @return

*/public

static string bignumbersum

(string bignumbera,string bignumberb)

int[

] arrayb=

newint

[maxlength+1]

;for

(int i =

0; i < bignumberb.

length()

; i++

)//2、構建result陣列,陣列長度等於較大整數字數+1

int[

] result=

newint

[maxlength+1]

;//3、遍歷陣列,按位相加

for(

int i =

0; i < result.length; i++

) result[i]

=temp;

}//4、把陣列再次逆序並轉成string

stringbuilder sb=

newstringbuilder()

;//是否找到大整數的最高有效位

boolean findfirst=

false

;for

(int i= result.length-

1;i>=

0;i--

) findfirst=

true;}

sb.(result[i]);

}return sb.

tostring()

;}

大整數相加(C 實現)

求兩個不超過 200200 位的非負整數的和。輸入格式 有兩行,每行是乙個不超過 200200 位的非負整數,可能有多餘的前導 00。輸出格式 一行,即相加後的結果。結果裡不能有多餘的前導 00,即如果結果是 342342,那麼就不能輸出為 03420342。輸出時每行末尾的多餘空格,不影響答案正確...

大整數相加

include include include include 思路如下 將兩個字串分別由低位到高位放置到int陣列中 然後每位對齊相加,大於10,本位取餘,高位進1 char bigintadd const char numstr1,const char numstr2 for i len1 i ...

大整數相加

cpp view plain copy code class cpp include include include include 思路如下 將兩個字串分別由低位到高位放置到int陣列中 然後每位對齊相加,大於10,本位取餘,高位進1 char bigintadd const char numst...