记住下面的t/=10
C++ 代码
#include<iostream>
#include<cstring>
using namespace std;
const int N = 100010;//定义数的最大长度
int A[N], B[N], C[N];
string a, b;
int add(int A[], int B[], int C[], int cnt)
{
int t = 0;//记录进位
for (int i = 1; i <= cnt; i++)
{
t += A[i] + B[i];//进位加上A和B第i位上的和
C[i] = t % 10;//将其各位放入到C[i]中
t /=10;//求出进位
}
if (t)//如果最高位的进位为1的话,那就在最大位进一个1
{
C[++cnt] = 1;
}
return cnt;
}
int main()
{
ios::sync_with_stdio(0);
cin >> a >> b;
int cnt1 = 0;//记录放进去的位置
//将数字进行倒着放,使高位在上面
for (int i = a.size() - 1; i >= 0; i--)
{
A[++cnt1] = a[i]-'0';//a[i]-'0'就是将其转化为数字a[i]
}
//同理,将b字符串倒着放入我们的B数组数组中
int cnt2 = 0;
for (int j = b.size() - 1; j >= 0; j--)
{
B[++cnt2] = b[j] - '0';
}
int t = max(cnt1, cnt2);//求出最大的长度
int top=add(A, B, C, t);
for (int i = top; i >= 1; i--)
{
cout << C[i];
}
puts("");
return 0;
}