Acwing 792 高精度減法 模板

2021-10-20 15:45:41 字數 1363 閱讀 8647

給定兩個正整數,計算它們的差,計算結果可能為負數。

輸入格式

共兩行,每行包含乙個整數。

輸出格式

共一行,包含所求的差。

資料範圍

1≤整數長度≤105

輸入樣例:

3211

輸出樣例:

21

#include

#include

using

namespace std;

vector<

int> a, b, c;

string s1, s2;

//比較a和b大小

//a >= b -> true

//a < b -> false

bool

cmp(vector<

int> a, vector<

int> b)

//倆陣列一摸一樣

return

true;}

//減法函式

//a >= 0, b <= 0, a >= b.

vector<

int>

sub(vector<

int> a, vector<

int> b)

//去前導0

//例如 300(倒序) == 003(正序) -> 300(倒序) == 3(正序)

while

(c.size()

>

1&& c.

back()

==0) c.

pop_back()

;return c;

}int

main()

for(

int i = c.

size()

-1; i >=

0; i --

) cout << c[i]

;return0;

}

和高精度加法一樣,也是三次倒序:兩次輸入,一次輸出;

它和高精加相比,少了運算函式中的第一句:「若長度不相等則return add(b, a) 」。實際上這一步驟不是沒了,而是在高精減中以另外一種方式呈現出來了:就是cmp函式。

它和高精加相比,在c.push_back((t + 10) % 10);(高精加中是c.push_back(t % 10),但循壞外還會檢測一次if(t),目的是看最高位有沒有發生進製,如果有的話就push進vector)

它和高精加相比,在運算函式中,在return c之前,多了一步去前導0的步驟

迴圈中還有其他小細節so on…

acwing 792 高精度減法

給定兩個正整數,計算它們的差,計算結果可能為負數。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的差。資料範圍 1 整數長度 105 10 5 105輸入樣例 3211 輸出樣例 21 include include include using namespace std vecto...

AcWing 792 高精度減法

題目描述 給定兩個正整數,計算它們的差,計算結果可能為負數。輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的差。資料範圍 1 整數長度 105 輸入樣例32 11輸出樣例21題目思路 低角標存低位,高角標存高位 依次進製 include include includeusing na...

AcWing 792 高精度減法(C 演算法)

輸入格式 共兩行,每行包含乙個整數。輸出格式 共一行,包含所求的差。資料範圍 1 整數長度 105 輸入樣例 3211 輸出樣例 212 基本思想 此演算法適用於高精度整數的減法,是將整數的每一位存入乙個陣列,然後遵循 不夠減向前借位補十 的原則,用人工加減的方法求和。3 步驟 用字串輸入,將相加的...