给定两个正整数,计算它们的和。
输入格式
共两行,每行包含一个整数。
输出格式
共一行,包含所求的和。
数据范围
1≤整数长度≤100000
输入样例:
12
23
输出样例:
35
做法:模拟手工加法
使用vector数组
#include <iostream>
#include <vector>
using namespace std;
string n, m;
vector<int> a, b, c;
void add(vector<int> &a, vector<int> &b){//加上引用可以提高效率,不加引用会copy
if (a.size() < b.size()) return add(b, a);
int t = 0;
for (int i = 0; i < a.size(); i ++ ){
t += a[i];
if (i < b.size()) t += b[i];
c.push_back(t % 10);
t /= 10;
}
if (t) c.push_back(t);
}
int main(){
cin >> n >> m;
//倒序,从各位开始相加
for (int i = n.size() - 1; i >= 0; i --) a.push_back(n[i] - '0');
for (int i = m.size() - 1; i >= 0; i --) b.push_back(m[i] - '0');
add(a, b);
//得到的是倒序,输出是需要正序
for (int i = c.size() - 1; i >= 0; i -- ) cout << c[i];
return 0;
}