大整数加法
题目描述:
给出两个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 }
转载请标明出处