題目:給出兩個很大的整數,要求實現程式求出兩個整數之和
思路:兩個特別大的整數,無法進行直接相加算出結果,則可以拆解成乙個乙個子步驟。——按位運算(小學僧列豎式)
用陣列儲存即可,陣列的每乙個元素,對應著大整數的每乙個數字。
大整數的相加步驟:
建立兩個整型陣列,長度為較大整數的位數+1。 把每乙個整數倒序儲存到陣列中,整數的個位存於陣列下標為0的位置,最高位存於陣列的尾部。(目的是為了符合從左到右訪問陣列的習慣)
建立結果陣列,結果陣列的長度同樣是較大整數的位數 + 1,(為了給高位進製預留)
遍歷兩個陣列,從左到右按位進行相加
把結果陣列的全部元素進行逆序,去掉首部的0,得到最終結果
**實現:
package some_problem;
/** * author candy_chen
* date 2020/7/29 20:53
* version 1.0
* description: 實現大整數相加
*//**
* */
public
class
bignumbersum
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.把result陣列再次逆序並轉成string
stringbuilder sb =
newstringbuilder()
;//是否找到大整數的最高有效位
boolean findfirst =
false
;for
(int i = result.length -
1; i >=
0; i--
) findfirst =
true;}
sb.(result[i]);
}return sb.
tostring()
;}public
static
void
main
(string[
] args)
}
大整數乘法題解
09 大整數乘法 總時間限制 1000ms 記憶體限制 65536kb 描述 求兩個不超過200位的非負整數的積。輸入 有兩行,每行是乙個不超過200位的非負整數,沒有多餘的前導0。輸出 一行,即相乘後的結果。結果裡不能有多餘的前導0,即如果結果是342,那麼就不能輸出為0342。樣例輸入 1234...
大整數加法實現
先貼 move num 實現將輸入資料移到陣列末尾 con num 實現將字元轉為數字 add 實現加法,進製操作 注意不列印前導0 include includevoid move num char num while j 0 void conv num char num void add cha...
大整數的運算實現
在csdn看到有人提出關於大數加法的實現問題,想起在學資料結構時有個課程設計是 鍊錶實現大整數的運算 當時看到就畏懼,如今是躍躍欲試。便嘗試去實現下,由於課本還托在樓管那,不了解具體的要求,就先用非鍊錶形式實現之。stl中的string拿來用之,順便熟悉下。後發覺比字元陣列好用多了。對於記憶體管理應...