基本思路
高精度減法與高精度加法的步驟基本一樣,都是對齊位數,然後開始減。
不過會遇到很多小細節,需要做好:
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 如果是第乙個數大於...