AcWing 3596. a+b
原题链接
简单
作者:
北信介
,
2024-02-27 10:49:15
,
所有人可见
,
阅读 19
高精度加法
C++ 代码
#include<bits/stdc++.h>
using namespace std;
vector<int> add_string(vector<int>& a, vector<int>& b)
{
int p = 0; // 定义进位
vector<int> c;
for(int i = 0; i < a.size() || i < b.size(); i ++ )
{
if(i < a.size()) p += a[i];
if(i < b.size()) p += b[i];
c.push_back(p % 10);
p /= 10;
}
// 最后特判进位
if(p != 0) c.push_back(1);
return c;
}
int main()
{
string s;
while(getline(cin, s))
{
vector<int> aa, bb;
int space = s.find(' ');
// 下面进行字符串拆分
string a = s.substr(0, space);
string b = s.substr(space + 1, s.size() - 1);
// vector倒着存储
for(int i = a.size() - 1; i >= 0; i -- ) aa.push_back(a[i] - '0');
for(int j = b.size() - 1; j >= 0; j -- ) bb.push_back(b[j] - '0');
vector<int> ans = add_string(aa, bb);
// 正向输出结果
for(int t = ans.size() - 1; t >= 0; t -- ) printf("%d", ans[t]);
printf("\n");
}
return 0;
}