#include <iostream>
#include <vector>
using namespace std;
const int N = 1e6 + 10;
vector<int> add(vector<int>& A, vector<int>& B) {
// 因为加法的计算结果有进位,所以要用一个数组逆序存储两数相加的和
vector<int> C;
int t = 0;
for(int i = 0; i < A.size() || i < B.size(); i++) {
if(i < A.size()) {
t += A[i];
}
if(i < B.size()) {
t += B[i];
}
// t % 10得到本位和
C.push_back(t % 10);
// t /= 10得到进位,因为每一轮t没有初始化,所以加入下一位的运算中
t /= 10;
}
// 如果最高位有进位,则把进位加到C中
if(t) {
C.push_back(t);
}
return C;
}
int main()
{
string a, b;
vector<int> A, B;
cin >> a >> b;
for(int i = a.size() - 1; i >= 0; i--) {
// a[i] - '0'得到数字
A.push_back(a[i] - '0');
}
for(int i = b.size() - 1; i >= 0; i--) {
B.push_back(b[i] - '0');
}
auto C = add(A,B);
//逆序输出
for(int i = C.size() - 1; i >= 0; i--) {
printf("%d",C[i]);
}
return 0;
}
C++大整数加法
最新推荐文章于 2024-02-09 14:57:27 发布