AcWing 791. 高精度加法
原题链接
简单
作者:
清_1
,
2021-02-03 23:25:37
,
所有人可见
,
阅读 301
算法1
C++ 代码
#include<iostream>
#include<vector>//一般大数要用到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];//这两行求每位上数字之和
c.push_back(t%10);//得到的数取余
t/=10;//进位
}
if(t) c.push_back(1);//如果都加完之后,还有进位,则push(1)
return c;
}
int main(){
string a,b;
vector<int> A,B;
cin>>a>>b;//a='123456'
for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');//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;
}