給定兩個正整數,計算它們的差,計算結果可能為負數。
輸入格式
共兩行,每行包含乙個整數。
輸出格式
共一行,包含所求的差。
資料範圍
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 步驟 用字串輸入,將相加的...