高精度加法

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

输入格式

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

输出格式

共一行,包含所求的和。

数据范围

11000001≤整数长度≤100000

输入样例:

12
23

输出样例:

35

思路:因为数据量很大,无法用整数数据类型来存储这两个数,所以采用 字符串+vector容器 来存储两个整数以及结果。
 1 #include
 2 
 3 #include
 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 , 则此处C的类型为vector41 
42     for(int i = C.size() - 1;i >= 0;i--)  printf("%d",C[i]);
43 
44     return 0;
45 
46 }

 

 

你可能感兴趣的:(高精度加法)