GitHub

大整数加法

题目描述:

给出两个200位以内的正整数,求其和。

输入描述:

多组测试数据。每组测试数据包括两行,每行一个数。

输出描述:

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

样例输入:

123

456

样例输出:

579

 思想:注意一位一位的加,注意进位,尤其是最后一个的进位会造成位数的增加。

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 int main(){
 5     string a,b,m;
 6     int i,j,length,p;
 7     while(cin>>a>>b){//输入两个数
 8         int per=0;
 9         if(a.size()<b.size()){
10             m=a;
11             a=b;
12             b=m;
13         }
14         length=a.size()-b.size();
15         j=a.size()-1;
16         int plus[a.size()];
17         string zeros(length,'0');
18         b=zeros+b;
19         for(i=a.size()-1;i>=0;i--){
20             p=(a[i]-'0')+(b[i]-'0')+per;//per是进位
21             if(p>9){
22                 p=p-10;
23                 plus[j--]=p;
24                 per=1;
25             }
26             else{
27                 plus[j--]=p;
28                 per=0;
29             }
30         }
31         if(per==1){
32             for(i=a.size()-1;i>=0;i--){//最后一位的进位
33                 plus[i+1]=plus[i];
34             }
35             plus[0]=1;
36             for(i=0;i<=a.size();i++){
37                 cout<<plus[i];
38             }
39             cout<<endl;
40         }
41         else{
42             for(i=0;i<a.size();i++){//输出
43                 cout<<plus[i];
44             }
45             cout<<endl;
46         }
47     }
48     return 0;
49 }

 

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