高精度加法

Posted zhaohaofei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高精度加法相关的知识,希望对你有一定的参考价值。

给定两个正整数,计算它们的和。

输入格式

共两行,每行包含一个整数。

输出格式

共一行,包含所求的和。

数据范围

11000001≤整数长度≤100000

输入样例:

12
23

输出样例:

35

思路:因为数据量很大,无法用整数数据类型来存储这两个数,所以采用 字符串+vector容器 来存储两个整数以及结果。
 1 #include<iostream>
 2 
 3 #include<vector>
 4 
 5 #include<string>
 6 
 7 using namespace std;
 8 
 9 vector<int> add(vector<int> &A,vector<int> &B){
10 
11     int t = 0; //存储两个整数每个位上的数字相加的和以及进位。
12 
13     vector<int> C;
14 
15     for(int i = 0 ;i < A.size()||i < B.size(); i++){
16 
17         if(i < A.size())  t += A[i];
18         if(i < B.size())  t += B[i];
19         C.push_back( t % 10); //存储两个整数第i + 1位数相加的结果的个位数。
20         t /= 10; //求进位
21     }
22 
23     if(t) C.push_back(t);  //如果每一位数都计算完了但是有进位的情况,则要考虑把这个进位也加到容器C里面。
24 
25     return C;
26 
27 }
28 
29 int main(){
30 
31     string a,b;
32 
33     cin >> a >> b;
34 
35     vector<int > A,B;
36 
37     for(int i = a.size()-1;i >= 0;i--)  A.push_back(a[i]-0); //vector容器从低位到高位依次存储整数。
38     for(int i = b.size()-1;i >= 0;i--)  B.push_back(b[i]-0);
39 
40     auto C = add(A,B); //auto是自动按照add()函数的返回结果来定义变量C。(如:add()函数返回类型为vector<int> , 则此处C的类型为vector<int>)
41 
42     for(int i = C.size() - 1;i >= 0;i--)  printf("%d",C[i]);
43 
44     return 0;
45 
46 }

 

 

以上是关于高精度加法的主要内容,如果未能解决你的问题,请参考以下文章

高精度加法

高精度1--加法

高精度小数加法

算法AcWing 791. 高精度加法

一本通1168 高精度加法

高精度 加法 减法 乘法 除法 整合