PAT演算法題大整數運算之string加減法實現

2021-10-02 08:49:38 字數 1238 閱讀 3445

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數,這邊翻為超長整數 避免與資料型態的長整數翻譯混淆 或俗稱大數運算。乙個變數無法表示...