[//]: # 高精度加法
题目描述
高精度加法,相当于 a+b problem,不用考虑负数。
样例
1001
9099
10100
算法
高精度
用字符串存储
C++ 代码
#include <bits/stdc++.h>
using namespace std;
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++)
{
//把每一位的一个或两个加数求和并放到t里
if(i < A.size()) t+=A[i];
if(i < B.size()) t+=B[i];
//在结果数组的末尾放入两数之和对10的模
C.push_back(t % 10);
//若两数之和大于10,即需要进位,否则便不需要进位,所以把对10取整的结果存起来放到下一位的计算中
t/=10;
}
//如果在最大一位的计算之后两数之和仍大于十,则需要在更高一位加上一
if(t) C.push_back(1);
return C;
}
int main(){
//定义两个整型数组,等会用于存储
vector <int> A,B;
//定义两个字符串分别读入两个数
string a,b;
cin >> a;
cin >> 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');
//调用函数并输出
for(int i = add(A,B).size() - 1;i >=0 ;i--) cout << add(A,B)[i];
return 0;
}