GitHub

大整数减法1121

题目描述:

给出两个200位以内的正数,算出第一个数减第二个数的值(结果为正)。

输入描述:

每组测试数据包括两行,第一行为被减数,第二行为减数。

输出描述:

每组测试数据输出一行,为所求两个整数之差。

样例输入:

987

654

样例输出:

333

思想:注意每次的借位,尤其是最后一步的借位操作

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 int main(){
 5     string a,b;
 6     int i,j,length,p;
 7     while(cin>>a>>b){
 8         int per=0,k=0,zero=0;
 9         length=a.size()-b.size();
10         j=a.size()-1;
11         int min[j];
12         string zeros(length,'0');
13         b=zeros+b;
14         for(i=j;i>=0;i--){
15             p=(a[i]-'0')-(b[i]-'0')-per;
16             if(p<0){
17                 p=p+10;
18                 min[j--]=p;
19                 per=1;
20             }
21             else{
22                 min[j--]=p;
23                 per=0;
24             }
25         }
26         while(min[k]==0){
27             k++;
28             if(k==a.size()){
29                 break;
30             }
31         }
32         if(k==a.size()){
33             cout<<zero;
34         }
35         else{    
36             for(i=k;i<a.size();i++){
37                 cout<<min[i];
38             }
39         }
40         cout<<endl;
41     }
42     return 0;
43 } 

 

posted @ 2019-06-11 21:08  繁华似锦觅安宁  阅读(337)  评论(0编辑  收藏  举报