大整數相加

2021-10-08 09:21:09 字數 1377 閱讀 2119

題目:

給出兩個很大的整數,求出兩個整數相加的和。

方式1:

思路:第1步:建立兩個整型陣列,陣列長度是較大整數的位數加1,把每乙個整數倒序儲存到陣列中,整數的個位儲存到陣列下標為0的位置,最高位存於陣列的尾部。

第2步:建立結果陣列,結果陣列的長度同樣是較大整數的位數+1,加1的目的為進製做準備。

第3步:遍歷兩個陣列,從左到右按照對應下標把元素兩兩相加,並處理進製。

第4步:把結果陣列逆序,去掉首位的0,即為最終的結果。

public static string bignumbersum(string bignumbera, string bignumberb) 

int arrayb = new int[maxlength + 1];

for(int i = 0; i < bignumberb.length(); i ++)

int result = new int[maxlength + 1];

for(int i = 0; i < result.length; i ++)

result[i] = temp;

} stringbuilder sb = new stringbuilder();

boolean findfirst = false;

for(int i = result.length - 1; i >= 0; i --)

findfirst = true;

}}

return sb.tostring();

}

方式2:

將大數處理成可以被直接進行運算的int型(-2147483648~2147483647),此處取9位,如此一來,記憶體占用空間和計算次數都相應減少。

public static string bignumbersum2(string bignumbera,string bignumberb) 

while(bignumberb.length() < group * 9)

for(int i = 0; i < group; i ++)

int result = new int[group];

int carry = 0;

for(int i = group - 1; i >= 0; i--) else

} stringbuilder sb = new stringbuilder();

for(int i = 0; i < group; i ++)

} return sb.tostring();

}

工具類biginteger和bigdecimal的底層實現同樣是把大數字轉換位int型的陣列,進行計算的。

參考:漫畫演算法

大整數相加

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...

大整數相加

include include project 兩個大整數相加 author 淺灘 data 2019.05.15 using namespace std void add const string const string intmain void add const string str1,co...