G7|A633.|题解
2026-07-08 10:35:27
发布于:广东
0阅读
0回复
0点赞
模拟加法
代码部分:
#include <bits/stdc++.h>
using namespace std;
string A, B; // 假设 A 和 B 最多 2000000 位
int a[2000010], b[2000010], c[2000010];
int main(){
// 输入数字存到字符串中
cin >> A >> B;
// 反转让最低位对齐
reverse(A.begin(), A.end());
reverse(B.begin(), B.end());
// 字符 -> 对应数字
for(int i = 0; i < A.size(); i ++ ) a[i] = A[i] - '0';
for(int i = 0; i < B.size(); i ++ ) b[i] = B[i] - '0';
// 模拟加法: 从最低位开始加
int len = max(A.size(), B.size());
for(int i = 0; i < len; i ++ ){
c[i] = a[i] + b[i] + c[i];
if(c[i] >= 10){
c[i + 1] = c[i + 1] + c[i] / 10;
c[i] = c[i] % 10;
}
}
// 最高位(len-1)进位(len)判断
if(c[len] > 0) ++ len;
// 逆序输出
for(int i = len - 1; i >= 0; i -- ){
cout << c[i];
}
return 0;
}
这里空空如也

有帮助,赞一个