AcWing 791. 高精度加法
原题链接
简单
作者:
chenjiaqiy
,
2023-10-31 20:45:15
,
所有人可见
,
阅读 54
#include <vector>
#include<iostream>
using namespace std;
const int N = 1e6 + 10;
// C = A + B, A >= 0, B >= 0
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 ++ )//当A和B没有读完时继续读入
{
if(i < A.size()) t += A[i];
if(i < B.size()) t += B[i];
C.push_back(t % 10);
t /= 10;
// C [i] = A[i] + B[i] + t;
}
if (t) C.push_back(1);
return C;
}
int main()
{
string a,b;
vector<int> A,B; //等价为数组
cin >> a >> b; // a = "123456"
//将a,b中的字符转化为数字
for (int i = a.size() - 1; i >= 0 ; i -- ) A.push_back(a[i] - '0');// A[6,5,4,3,2,1]
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;
}