采用字符串的方式来进行处理遇到两个数A+B大于数据类型 long long 的最大值时;
字符串的求和运算
转载请标注:http://blog.csdn.net/nbe999/article/details/77886999
参考代码如下:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <istream>
using namespace std;
int main()
{
string a,b; cin >>a >> b; //输入两个数 以字符形式存储
int n=a.size(),m=b.size();
int max=n>m?n:m;
int dif=0;//进位
int temp=0;
string resoult="";
int i=n-1;
int j=m-1;
for(int k=0;k<max;++k)
{
if(i>=0 && j>=0) //m==n的情况
{
temp=(a[i]-'0')+(b[j]-'0')+dif; //本位和
dif=temp/10; //进位123
resoult=char(temp%10+'0')+resoult;
--i;--j;
}
else if(i>j) //此时j==0; i>j
{
temp=(a[i]-'0')+dif; //本位和
dif=temp/10; //进位
resoult=char(temp%10+'0')+resoult;
--i;
}
else //此时i==0;j>i
{
temp=(b[j]-'0')+dif; //本位和
dif=temp/10; //进位
resoult=char(temp%10+'0')+ resoult;
--j;
}
}
//最末还有一个进位
if(dif>0) resoult=char(dif+'0')+resoult;
cout << resoult<<endl;
return 0;
}