pat中常考的大整數運算一般是加減法,乘除法少有考察。《演算法筆記》上用的結構體實現,這裡選用stl中的string容器實現,**如下:
注:題目中可能會給出兩個大整數的長度或者大小關係等條件,那麼又可以根據情況精簡**!比如:1024. palindromic number (25)
#include
#include
#include
using
namespace std;
string add
(string a, string b)
if(carry !=
0) r +
="1"
;//還有進製則補在高位(字串連線)
reverse
(r.begin()
, r.
end())
;//倒轉
return r;
}string sub
(string a, string b)
else
if(a.
size()
< b.
size()
)else
if(a < b)
reverse
(a.begin()
, a.
end())
;reverse
(b.begin()
, b.
end())
;int len = a.
size()
; string r =
string
(len,
'0')
;//result
for(
int i =
0; i < len; i++
) r[i]
= a[i]
- b[i]
+'0'
;//注意+'0'
}reverse
(r.begin()
, r.
end())
;//刪除高位多餘的0,但注意保證如果結果為0,留乙個0
while
(r[0]==
'0'&& r.
size()
>1)
if(!flag) r =
"-"+ r;
//如果areturn r;
}int
main()
演算法筆記 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...
C 經典演算法題 超長整數運算(大數運算)
基於記憶體的有效運用,程式語言中規定了各種不同的資料型態,也因此變數所可以表達的最大整數受到限制,例如123456789123456789這樣的 整數就不可能儲存在long變數中 例如c c 等 我們稱這為long數,這邊翻為超長整數 避免與資料型態的長整數翻譯混淆 或俗稱大數運算。乙個變數無法表示...