演算法筆記 大整數

2021-10-23 01:11:21 字數 1246 閱讀 9339

對一道a+b的題目,如果a和b的範圍在int範圍內,那麼相信大家很快就能寫出程式。但是如果a和b是有著1000個數字的整數,恐怕就沒有辦法用已有的資料型別來表示了,這時就只能老實去模擬加減乘除的過程。

解題思路:

使用陣列來儲存整數字串,然後低位存放低位,高位存放高位

在進行大整數加減運算的時候,

若出現負數,則在最後輸出的時候,新增負號即可

#include

using

namespace std;

#include

struct bign};

bign change

(string str)

return big;

}int

compare

(bign b1,bign b2)

else

if(b1.len < b2.len)

else

else}}

return0;

}bign add

(bign b1,bign b2)

if(carry !=0)

return big;

}bign sub

(bign b1,bign b2)

else

//當前位不夠減

}while

(big.len >=

1&& big.d[big.len -1]

==0)//去掉最高位的0

return big;

}//高精度與低精度的乘法

bign multi

(bign b,

int num)

while

(carry !=0)

//乘法可能有多位進製

return big;

}//高精度與低精度除法

bign divide

(bign b,

int num,

int& r)

else

}//去掉高位的零

while

(big.len -

1>=

1&& big.d[big.len-1]

==0)//保證結果至少有一位

return big;

}void

printbign

(bign big)

cout << endl;

}//大整數的四則運算

intmain()

演算法筆記 大整數相加

大整數相加,這裡用string輸入,轉為int型別陣列存數,陣列低位存整數的低位 個位存在index 0的地方 include include const int maxlen 10000 struct bign void str2bign char str,int n,bign bign retu...

演算法筆記 5 6 大整數運算

規則 1 整數的高位存放在陣列的高位,低位存放在陣列的低位 2 輸入字串存放到字元陣列內,正常情況下是高位存放在陣列的低位,低位存放在陣列的高位,因此需要定義函式change 轉換 3 輸出時,逆序輸出,先輸出高位,再輸出低位 include include includeusing namespa...

演算法筆記 大整數運算 a b

問題描述 實現乙個加法器,使其能夠輸出a b的值。輸入要求 輸入包括兩個數a和b,其中a和b的位數不超過1000位。關鍵易錯 1.將char型陣列轉換成int型陣列 2.int型陣列的大小應該比1000大,因為兩個數相加可能是1001位。3.考慮a和b的正負問題。includeusing names...