字符串逆序方向模拟加法过程,注意处理边界进位。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
inline int ctoi(char c)
{
return c - '0';
}
void add(string &s1, string &s2)
{
if (s1.size() > s2.size()) return add(s2, s1);
vector<int> vec;
int tt = 0;
for (int i = 0; i < s2.size(); i++) {
tt += i < s1.size() ? (ctoi(s1[i]) + ctoi(s2[i])) : ctoi(s2[i]);
vec.push_back(tt % 10);
tt /= 10;
}
// handle carray number
if(tt) vec.push_back(tt);
for (int i = vec.size() - 1; i >= 0; i--)
cout << vec[i];
}
int main()
{
string s1, s2;
for (; cin >> s1; ) {
cin >> s2;
reverse(s1.begin(), s1.end()), reverse(s2.begin(), s2.end());
add(s1, s2);
cout << endl;
}
return 0;
} 
京公网安备 11010502036488号