码迷,mamicode.com
首页 > 其他好文 > 详细

高精度加法

时间:2020-02-06 23:04:48      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:ring   数据类型   row   思路   using   www   ace   -o   字符   

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

输入格式

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

输出格式

共一行,包含所求的和。

数据范围

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 }

 

 

高精度加法

标签:ring   数据类型   row   思路   using   www   ace   -o   字符   

原文地址:https://www.cnblogs.com/ZhaoHaoFei/p/12271299.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!