算法理解
将两个数字反转后,从个位到高位逐位相加并维护进位,完成后再反转答案。
- 复杂度:
O(max(n, m))。 - 注意:模板默认输入是非负十进制整数;带符号情形需先处理符号。
模板代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
string a,b,c;
cin>>a>>b;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int t=0;
for (int i=0;i<a.size()||i<b.size();i++)
{
if (i<a.size()) t+=a[i]-'0';
if (i<b.size()) t+=b[i]-'0';
c+=t%10+'0';
if (t/10) t=1;
else t=0;
}
if (t)
{
c+='1';
}
reverse(c.begin(), c.end());
cout<<c;
return 0;
}
