模擬 高精度減法運算

2021-10-07 17:33:14 字數 1369 閱讀 6579

基本思路

高精度減法與高精度加法的步驟基本一樣,都是對齊位數,然後開始減。

不過會遇到很多小細節,需要做好:

sub(a,b) 如果ab

減法運算,基本的借位思想要注意

如果a的位數大於b,那麼我這裡會補充前導0給b,從而方便進行對齊位數的減法

輸出結果時,前導0的刪除操作

思考如何判斷輸入的字串之間的大小

bool flag =

false

;//判斷str1是否小於str2if(

(str1length()

==str2.

length()

)|| str1.

length()

length()

)

實現**
/*

author:snnu_lgw

date:2020/7/3

*/#include

using

namespace std;

typedef

long

long ll;

string sub

(string str1,string str2)

int len1 = str1.

length()

,len2 = str2.

length()

;for

(int i=

1;i<=len1-len2;i++

)//此時,str2的長度必然不大於str1的長度,所以只需要給str2補充前導0即可

str2 =

"0"+str2;

for(

int i=len1-

1;i>=

0;i--

) str =

char

(temp+

'0')

+str;

}int len_zero =0;

int len = str.

length()

;while

(str[len_zero]

=='0')

str = str.

substr

(len_zero,len-len_zero);if

(len_zero == len) str=

"0";

//如果0的個數和資料的長度相同,那麼說明這個數必須要輸出乙個'0',否則會輸出乙個 空

if(flag)

str =

"-"+str;

return str;

}int

main()

高精度運算 加法 減法

高精度算是我高中期間沒有學明白的知識點之一,其實挺簡單的東西。核心思路是 按位模擬豎式運算 說白了就是模擬題。加法減法從低位到高位模擬,因為會進製借位 乘法也從低到高因為進製 除法要從高到低因為我們手算除法時也是從高到低保留餘數的。高精度減法 1 include2 using namespace s...

高精度減法(陣列模擬)

大整數減法模板如下 include include include define size 1001 using namespace std bool neg 是否為負數 int a size b size temp size int comp int a,int b 判斷大小,a b 的情況下,返...

C 高精度減法運算(a a b)

一 題目 求兩個大的正整數相減的差。二 思路 1.接收輸入的兩個大整數的數字串 用string接收兩個正整數的數字串 c用字元陣列或字元指標 2.比較兩個正整數哪個大?1 比較兩個大整數的數字串長度 2 如果長度相等,可用strcmp函式比較兩個數字串,標頭檔案為 include 如果是第乙個數大於...