高精度減法(C 實現)

2021-10-24 23:01:17 字數 1112 閱讀 6931

【演算法分析】

1.c++不支援大數運算,故而引入高精度演算法。

2.高精度減法將大數以字串形式輸入,然後拆分轉換為一位一位的整數,之後按照小學的豎式運算方法完成編碼。(注意:字串中0下標從左開始,豎式運算中0下標從右開始,故**中需要有乙個逆序操作。如a[i]=s1[s1.length()-i-1]-'0';)

3.高精度減法中需判斷減數、被減數的大小 --> 若s1、s2是string型別,則用s1.compare(s2)來判斷s1、s2大小。若s1、s2是字元陣列,則用strcmp(s1,s2)來判斷s1、s2大小。

4.高精度減法中需交換減數、被減數 --> 若s1、s2是string型別,則再引入乙個字串t,然後用「t=s1;s1=s2;s2=t;」來完成s1、s2的交換。若s1、s2是字元陣列,則再引入乙個字元陣列t,然後用「strcpy(t,s1);strcpy(s1,s2);strcpy(s2,t);」來完成s1、s2的交換。

5.對最高位做判斷,刪除前導0,然後輸出便得結果。如需對例子1235-1233=0002進行前導0的刪除。

【程式**:**於

#include #include using namespace std;

const int n = 1000010;

bool cmp(vector&a, vector&b)

void trimzero(vector&a)

vectorsub(vector&a, vector&b)

trimzero(c);

return c;

}int main()

for (int i = c.size() - 1; i >= 0; i--) cout << c[i];

return 0;}/*

input:

56328123678

958729125679

output:

-902401002001

-----------------------

input:

9876543219

123456789

output:

9753086430

*/

【參考文獻】

高精度減法 C 實現

用於計算含有超過一般變數存放不下的非負整數 高精度加法這個過程是模擬的小學豎式減法計算 原理基本上與高精度加法相同,僅在核心 處有些區別,因此本文較為簡略,建議先閱讀文章 高精度加法 c 實現 因為陣列存放的元素順序與我們計算的順序是相反的,在豎式計算中我們是將其右對齊 個位對個位,十位對十位,以此...

高精度減法 C

仿照豎式減法,先對其,再對應位相減。演算法處理時,先比較大小,用大的減小的,對應位再比較大小,用於作為借位符。include include define maxsize 20 define maxoutsize maxsize 2 using namespace std intmain b max...

高精度減法(c )

每當要進行精度較高的運算時,就要用到高精度。下圖是各個型別的數值範圍 如果想不起各個型別佔多少位元組,可以採用下面的方法 printf d d sizeof int sizeof long long 格式為 sizeof 資料型別 可以把值賦值給乙個變數,也可以直接輸出 好了,回到正點。我們先看例題...