C 高精度加法及模板

2022-05-26 18:42:11 字數 1387 閱讀 6050

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

先上**:

#pragma gcc optimize(2)

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define pm make_pair

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int> pii;

const

int n =

1e6+50;

const

int mod =

1e9+7;

const

int inf =

0x3f3f3f3f

;const

double eps =

1e-8

;vector<

int> a, b;

vector<

int>

add(vector<

int>

&a, vector<

int>

&b)if

(t) c.

push_back(1

);//如果最後一位要進製直接push_back()即可

return c;

}int

main()

sting a, b; 兩數之大,long long 存不下,固用string暫時存一下,再轉移到vector 中,要注意的是,假設存的數是123456789,在vector中的順序應該為987654321,乙個下標對應一位(個十百千萬),為什麼要這樣做,因為好模擬,我們做加法時經常遇到12 + 98 = 110,如果我們按地位到高位儲存,就是12 98 然後按照我們的計算規則從後往前模擬,這樣模擬完還多了一位,不好弄,如果從前往後模擬,21 89 這樣模擬完了之後可以push_back,輸出時逆序即可。

關於模擬:

設乙個 t 來控制進製,假設該位為8 和 9,8 + 9 = 17,那麼 t % 10 代表本來的答案,t / 10 = 1,代表要進製,計算時實質上就是t = t + a[i] + b[i],再對每一位進行操作。

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 高精度加法

所謂高精度加法就是對兩個和可能會超過long long資料範圍的數進行加法運算。這種情況下,顯然不能使用常規的方法進行運算。那麼,不妨考慮一下人在紙上是如何進行加法運算的。當人進行加法運算時,通常會使兩個數的右端對齊,而且位數較多的放在上面。然後從低位到高位進行運算,若這一位的運算結果與進製的和超過...

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

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