AcWing 791. 高精度加法
原题链接
简单
作者:
梦_511
,
2024-02-28 20:24:25
,
所有人可见
,
阅读 18
给定两个正整数(不含前导 0),计算它们的和
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1000010;
vector<int>a,b;
string sa,sb;
vector<int> add(vector<int>&a,vector<int>&b)
{
vector<int>c;
if(a.size() < b.size()) return add(b,a); //保持a的长度大于等于b
int p = 0;
for(int i = 0 ; i < a.size(); i ++)
{
p = a[i] + p; //p 是来自低位的进位
if(i < b.size()) p += b[i];
c.push_back( p % 10 );
p /= 10;
}
if(p) c.push_back(p);
return c;
}
int main()
{
cin>> sa >> sb;
for(int i = sa.size() - 1 ; i >= 0 ; i --)
{
a.push_back(sa[i] - '0'); //从低位到高位存储,方便产生进位
}
for(int i = sb.size() - 1 ; i >= 0 ; i --)
{
b.push_back(sb[i] - '0');
}
//puts("");
auto c = add(a,b);
for(int i = c.size() - 1 ; i >= 0 ;i --)
{
printf("%d",c[i]);
}
return 0;
}