【算法分析】
(1)C++不支持大数运算,故而引入高精度算法。
(2)高精度算法将大数以字符串形式输入,然后拆分转换为一位一位的整数,之后按照小学的竖式运算方法进行计算。(注意:字符串中 0 下标从左开始,竖式运算中 0 下标从右开始,故代码中需要有一个逆序(reverse)操作。)
(3)对最高位做判断,然后输出便得结果。对应于下面代码中的 if(t) c+=(t+‘0’);
【算法代码】
#include <bits/stdc++.h>
using namespace std;
string hiAdd(string a,string b) {
string c;
int t=0;
int i=a.size()-1, j=b.size()-1;
while(i>=0 || j>=0) {
if(i>=0) t+=(a[i]-'0');
if(j>=0) t+=(b[j]-'0');
c+=((t%10)+'0');
t/=10;
i--, j--;
}
if(t) c+=(t+'0');
reverse(c.begin(),c.end());
return c;
}
int main() {
string a,b;
cin>>a>>b;
cout<<hiAdd(a,b)<<endl;
return 0;
}
/*
in:
11 99
out:
110
*/