對一道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...