• 高精度加法


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

    输入格式

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

    输出格式

    共一行,包含所求的和。

    数据范围

    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 }
     
  • 相关阅读:
    软件工程 团队开发(10)
    软件工程第五周总结
    软件工程 团队开发(9)
    软件工程 团队开发(8)
    软件工程 团队开发(7)
    软件工程 团队开发(6)
    素数
    动手动脑
    设计统计英文字母出现频率的程序的感想
    四则运算实验 验证码生成实验
  • 原文地址:https://www.cnblogs.com/ZhaoHaoFei/p/12271299.html
Copyright © 2020-2023  润新知