高精度減法(c )

2021-09-26 03:38:52 字數 1637 閱讀 5966

每當要進行精度較高的運算時,就要用到高精度。

下圖是各個型別的數值範圍:

如果想不起各個型別佔多少位元組,可以採用下面的方法:

printf("%d %d",sizeof(int),sizeof(long long));
格式為:

sizeof(資料型別)

可以把值賦值給乙個變數,也可以直接輸出;

好了,回到正點。我們先看例題:

時間限制: 1000 ms 記憶體限制: 65536 kb

提交數: 9471 通過數: 5448

【題目描述】

求兩個大的正整數相減的差。

【輸入】

共2行,第1行是被減數a,第2行是減數b(a>=b)。每個大整數不超過200位,不會有多餘的前導零。

【輸出】

一行,即所求的差。

【輸入樣例】

9999999999999999999999999999999999999

9999999999999

【輸出樣例】

9999999999999999999999990000000000000

讀完題目,是不是發現這就是赤裸裸的模板題目;大概的思路為3步:

一,讀入a和b;

二,進行計算,如果a[i]先是讀數:

int i;

int a[205],b[205],lena,lenb;

char t[205],t1[205];

scanf("%s %s",t,t1);

lena=strlen(t);

lenb=strlen(t1);

memset(a,0,sizeof(a));

memset(b,0,sizeof(b));

for(i=0;i再進行計算:

i=1;x=0;

while((i<=lena) or (i<=lenb))

else x=0;

i++;

}

最後再輸出:

bool f=false;

for(i=n-1;i>=1;--i)

else if(f)printf("%d",a[i]);

} if(!f)printf("0");

完整ac程式:

#include#include#includeusing namespace std;

const int n=205;

int main()

else if(f)printf("%d",a[i]);

} if(!f)printf("0");

return 0;

}

記得點讚哦

高精度減法 C

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

高精度減法 c

兩個整數 a,b 第二個可能比第乙個大 結果 是負數要輸出負號 常規思路,不花裡胡哨,通俗易懂。else m 0不用借位 lenb lena while lena 1 因為a字元陣列長度始終不小於b字元陣列長度,所以lenb到0時lena還可能沒到0,此後處理的是a比b高出的位,例如1299 20則...

高精度減法 C

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