思路:
定义一个数组A,A[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b。计算c = a + b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。
Code:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
int c[1000];
int main()
{
string a, b;
vector<int> v;
cin>>a>>b;
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
int jingwei = 0, tmp = 0;
while (a.size() != b.size()) {
if (a.size() > b.size()) {
b.push_back('0');
} else {
a.push_back('0');
}
}
for (int i=0;i<a.size();i++) {
tmp = a[i] + b[i] - 2 * '0' + jingwei;
jingwei = tmp / 10;
v.push_back(tmp % 10);
}
if (jingwei > 0) {
v.push_back(jingwei);
}
for (int i=v.size()-1;i>=0;i--) {
cout<<v[i];
}
return 0;
}