模板 C 高精度加法

2021-09-25 16:34:17 字數 1183 閱讀 5651

所謂高精度加法就是對兩個和可能會超過long long資料範圍的數進行加法運算。這種情況下,顯然不能使用常規的方法進行運算。那麼,不妨考慮一下人在紙上是如何進行加法運算的。

當人進行加法運算時,通常會使兩個數的右端對齊,而且位數較多的放在上面。然後從低位到高位進行運算,若這一位的運算結果與進製的和超過了9,則對這一位只保留結果的個位數,並使下一位的進製為1

為了保證能夠容納得下足夠多的位數,這裡我使用了string型別進行數字的儲存。在進行高精度加法之前,為了確保兩個數字位數相等,首先要在較短的數字前面補0

if

(x.length()

< y.

length()

)//保證y始終時是位數較短的數字字串

swap

(x, y)

;int delta = x.

length()

- y.

length()

;//計算兩個字串的長度差

for(

int i =

0; i < delta; i++

)//在較短的字串前補0,使其長度等於較長的字串的長度

y ="0"+ y;

之後開始從低位到高位進行運算

#include

#include

#include

using

namespace std;

string add_int

(string_x, string _y)

else

}//若迴圈結束後,仍有進製,說明結果超出了加數中較長的乙個的位數,根據加法的法則,應在結果前面加「1」

if(jw ==1)

result +

="1"

;//反轉結果。因為前面是從後往前運算,而字串是從前往後加的,所以要反轉一下

reverse

(result.

begin()

, result.

end())

;return result;

}int

main()

C 高精度加法模板

1.用字串 陣列進行儲存 2.注意高精度位數的確定 3.注意進製借位處理 include include include include include include define n 10001 using namespace std int main c lenc x if c lenc 0 ...

C 高精度加法及模板

適用於兩個正整數相加,且int和long long 存不下的情況下,用 模擬兩個數相加過程,用vector 存值,實質上就是用vector模擬計算過程,達到數字範圍遠遠高於long long 時的加法操作 本文為1e6 先上 pragma gcc optimize 2 include include...

演算法模板 高精度加法模板

高精度,字面意思理解,精度高,位數很多,乙個數的位數可能是1e3甚至更高 應用 手動模擬大整數的加法 兩個位數很大,位數可能達到1e3甚至更高的數加法運算直接儲存無法儲存,常規使用字串或者陣列來儲存時間複雜度是o max m,n 但是空間複雜度是2 m n m和n分別是兩個數的位數大小 模擬兩個數進...