高精度减法

【问题描述】

  输入两个正整数,求他们的差。

【样例输入】

23456789723456789
123456789123456789

【样例输出】

-99999999400000000

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 int main(){
 5     char a1[10001],b1[10001],c1[10001];
 6     int a[10001],b[10001],c[10001];
 7     int lena, lenb;
 8     cin >> a1 >> b1;
 9     //判断减数和被减数的大小 
10     if(strlen(a1)<strlen(b1)||strlen(a1)==strlen(b1)&&strcmp(a1,b1)){
11         //交换两个字符串 
12         strcpy(c1,a1);
13         strcpy(a1,b1);
14         strcpy(b1,c1);
15         cout << "-";
16     }
17     lena = strlen(a1);
18     lenb = strlen(b1);
19     for(int i = 0;i < lena; i++){
20         a[i] = a1[lena-1-i] - 48;
21     }
22     for(int i = 0;i < lenb; i++){
23         b[i] = b1[lenb-1-i] - 48;
24     } 
25     int lenc = 0;
26     while(lenc < lena){
27         if(a[lenc] < b[lenc]){
28             a[lenc] += 10;
29             a[lenc+1]--;
30         }
31         c[lenc] = a[lenc] - b[lenc];
32         lenc++;
33     }
34     //去掉前面多余的数字0 
35     for(int i = lenc-1; i > 0; i--){
36         if(c[i]==0){
37             lenc--;
38         }else{
39             break;
40         }
41     }    
42     for(int i = lenc-1; i >= 0; i--){
43         cout << c[i];
44     }
45     return 0;
46 }

猜你喜欢

转载自www.cnblogs.com/Hankercat/p/9238950.html