当遇到long long也存放不下的数据时,要进行运算的话,就要用到高精度运算了,以函数的形式给出,因为常常在一道题中高精度运算只是其中的一部分
复杂度 : O(n)
string add(string a,string b)
{
string ans,res;
int len1 = a.length()-1; //注意长度减1;
int len2 = b.length()-1;
int inter = 0; //表示来自低位的进位
while( len1>=0 || len2>=0 ) //当有数可以运算时
{
int num;
if( len1>=0 && len2>=0 ) num=a[len1]-'0'+(b[len2]-'0')+inter; //两个都能加
else if( len1>=0 ) num = a[len1]-'0'+inter; //第一个数组能加的情况
else num = b[len2]-'0'+inter; //第二个数组能加的情况
inter = num/10; //进位的运算,n进制运算除以n即可
num %= 10; //当前位对10求余,n进制加法对n求余就可以了
ans += num+'0';
len1--;
len2--;
}
if( inter!=0 ) ans += inter+'0';
int len = ans.length();
for( int i = len-1 ;i >= 0 ; i-- ) //倒一下返回
{
res+=ans[i];
}
return res;
}