AcWing 791. 高精度加法
原题链接
简单
作者:
就是要AC
,
2020-10-14 19:11:55
,
所有人可见
,
阅读 332
高精度加法
算法
vector<int> add(vector<int> &A,vector<int> &B){
if(A.size()<B.size()){//保证A比B长
return add(B,A);
}
vector<int> c;
int t=0;//t为1或0,用于进位
for(int i=0;i<A.size();i++){
t+=A[i];
if(i<B.size())t+=B[i];
c.push_back(t%10);
t/=10;//超过10的话进位
}
if(t)c.push_back(1);//最后t为1
return c;
}
C++ 代码
#include<iostream>
#include<vector>
#include<stdio.h>
using namespace std;
string a,b;
vector<int> add(vector<int> &A,vector<int> &B){
if(A.size()<B.size()){
return add(B,A);
}
vector<int> c;
int t=0;
for(int i=0;i<A.size();i++){
t+=A[i];
if(i<B.size())t+=B[i];
c.push_back(t%10);
t/=10;
}
if(t)c.push_back(1);
return c;
}
int main(){
cin>>a>>b;
vector<int>A,B;
for(int i=a.size()-1;i>=0;i--){
A.push_back(a[i]-'0');
}
for(int i=b.size()-1;i>=0;i--){
B.push_back(b[i]-'0');
}
auto d=add(A,B);
for(int i=d.size()-1;i>=0;i--){
printf("%d",d[i]);
}
cout<<endl;
return 0;
}