基礎演算法 高精度減法

2021-10-02 11:06:41 字數 814 閱讀 5888

從低位開始ab對位相減,如果不夠減則向前借1。

用t來儲存借位狀態,即:a-b+t

(t+10)%10 包含了兩種情況:1、如果a[i]-b[i]>=0,則+10取餘數還是個位數。2、a[i]-b[i]<0則要借位+10然後取餘10,還是回得到個位的數

去掉前導00

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

輸入格式

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

輸出格式

共一行,包含所求的差。

資料範圍

1≤整數長度≤1051≤整數長度≤105

輸入樣例:

32

11

輸出樣例:

21
#include #include using namespace std;

//判斷都否有 a>=b,返回true或者false

bool cmp(vector&a, vector&b)

//c = a - b

vectorsub(vector&a, vector&b)

//得到的結果c是一串陣列,結果減完之後前面存的全是零,假設結果為9,這樣取出來的數是 000009(舉例),所以我們要去掉前導(去掉9前面的0)

while (c.size() > 1 && c.back() == 0) c.pop_back();//去掉前導00

return c;

}int main()

else//if a < b

return 0;

}

高精度減法

題目描述 高精度減法 輸入輸出格式 輸入格式 兩個數 第二個可能比第乙個大 輸出格式 結果 是負數要輸出負號 輸入輸出樣例 輸入樣例 1 2 1 輸出樣例 1 1說明 這也沒什麼好說的,沒什麼特別的要求,就是乙個普普通通的高精減。程式如下 const max 500 var s integer a,...

高精度減法

description 輸入兩個整數a和b,輸出這兩個整數的差。a和b都不超過100位。input 輸入包括兩行,第一行為乙個非負整數a 被減數 第二行為乙個非負整數b 減數 兩個整數都不超過100位,兩數的最高位都不是0。output 輸出一行,表示a b的值。sample input 99999...

高精度減法?!

高精減 嗯輸入就不再講一遍了。儲存和之前是一樣的,倒序儲存。減法需要借位,所以解決減法借位是關鍵。方法如下 if a i a i 1 向上一位借一做十 a i 10 c i a i b i 逐位相減這樣就可以處理借位問題。當然,在減法中還有乙個需要處理的問題,當然這個問題很重要 減法中有被減數和減數...