高精度 模板 高精度整數加 減 乘 除模板

2021-10-24 21:28:06 字數 3081 閱讀 2769

加減

乘除高精度加減乘除模板,可能會在求方案數、求組合數等情況下遇到,c++ 整形範圍:

整型數範圍

int8

-128 ~ 127

uint8

0 ~ 256

int16

-32768 ~ 32767

uint16

0 ~ 65535

int32

-2147483648 ~ 2147483647

uint32

0 ~ 4294967295

int64

-9223372036854775808 ~ 9223372036854775807

uint64

0 ~ 18446744073709551615

有以下幾個模板:

在此高精乘法與高精除法其實一般不會真有兩個大整數直接進行運算,一般情況下是乙個大整數配合乙個正常的整數來做,其中除法最為複雜,所以用得少,我也沒有對其進行整理。

大整數均儲存在vector中,且在vector中的低位存放大整數的最高位,即逆序儲存,主要目的是方便最後進製的處理。

以下為處理大整數的輸入**:

注意:大整數輸入處理是一致的,因為可能涉及到大整數間的加減乘除混合運算,屆時只需要傳參呼叫相應函式即可。

模擬加法過程就行了,記得處理進製即可。沒特別需要注意的點。

高精加返回和。

參見**如下:

#include

#include

#include

using

namespace std;

vector<

int>

add(vector<

int>

& a, vector<

int>

& b)

if(t) c.

push_back(1

);return c;

}int

main()

注意需要比較下這兩個大整數的大小,保證a>=b,若不是,則交換兩數再新增負號即可。

高精減返回兩數較大值減去減小值的差,保證非負。

注意:最後需要處理前導 0 問題,避免輸出 0001 這類的情況。

參見**如下:

#include

#include

#include

using

namespace std;

// 判斷a>=b

bool

cmp(vector<

int>

& a, vector<

int>

& b)

// 計算c=a-b,保證a>=b,a位數大於等於b

vector<

int>

sub(vector<

int>

& a, vector<

int>

& b)

// 消除前導0

while

(c.size()

>

1&& c.

back()

==0) c.

pop_back()

;return c;

}int

main()

else

return0;

}

給出了兩種高靜乘情況,高精度數乘低精度數,高精度數乘高精度數。

高精乘返回乘積。

其中高精度數乘低精度數和加法很相似。

高精度數乘高精度數,採用模擬豎式乘法實現。

參見**如下:

#include

#include

#include

using

namespace std;

vector<

int>

mul(vector<

int>

& a,

int b)

while

(c.size()

>

1&& c.

back()

==0) c.

pop_back()

;return c;

}vector<

int>

mul1

(vector<

int>

&a, vector<

int>

&b)while

(c.size()

>

1&& c.

back()

==0) c.

pop_back()

;return c;

}int

main()

只給出高精度數除以低精度數的情況,至於高精度除高精度很少用到。

高精除返回商和餘數。

注意:高精除中需要從高精數的最高位進行處理,這是與上三者不同之處。最後需要將商進行翻轉保證介面一致性,且需要去除前導 0,反轉後也很方便去除前導 0。

參見**如下:

#include

#include

#include

#include

using

namespace std;

vector<

int>

div(vector<

int>

& a,

int b,

int&r)

reverse

(c.begin()

, c.

end())

;while

(c.size()

>

1&& c.

back()

==0) c.

pop_back()

;return c;

}int

main()

高精度加減乘除模板

include include include using namespace std const int power 1 每次運算的位數為10的power次方,在這裡定義為了方便程式實現 const int base 10 10的power次方。要壓位的時候,只需改power 和 base即可,如...

高精度 加減乘除 模板

例題 高精度加法 題目描述 給定兩個正整數,計算它們的和。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的和。資料範圍 1 整 數長度 100000 1 整數長度 100000 1 整數長度 100 000 輸入樣例 12 23輸出樣例 35c 版本一 include include...

高精度 加減乘除 模板

座位旁邊乙個同學,哼著歌,說著 要用高精度啊,好麻煩,不想寫啊啊啊,不想寫啊,不想寫啊 他的這首歌持續了大約6min,然後他的dev裡乙個漂亮的高精度運算 已經寫好了。看來大公尺餅也不能甘於落後啊,模板來啦 1 include2 include3 include4 define ll long lo...