每當要進行精度較高的運算時,就要用到高精度。
下圖是各個型別的數值範圍:
如果想不起各個型別佔多少位元組,可以採用下面的方法:
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...