791. 高精度加法

给定两个正整数(不含前导 00),计算它们的和。

输入格式

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

输出格式

共一行,包含所求的和。

数据范围

1≤整数长度≤100000

输入样例:

12
23

输出样例:

35
#include <iostream>
#include <vector>

using namespace std;

vector<int> add(vector<int> &A, vector<int> &B){
    if (A.size() < B.size()) return add(B,A);//若a<b,则交换位置
    
    vector<int> C;                            //定义数组C存两数之和
    int t = 0;                                //
    for (int i =0; i < A.size(); i++){
        t +=A[i];                              //按位做加法
        if (i < B.size()) t+=B[i];             //B的高位全加进去
        C.push_back(t%10);                     //t存储该位a,b和模10即为结果
        t /= 10;                               //t存储进位为0或1
    }
    if (t) C.push_back(t);
    return C;
}

int main(){
    string a,b;                //定义字符串a,b
    vector<int> A,B;           //定义数组A,B
    cin >> a >> b;             //输入两个数a,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');
    vector<int> C = add(A,B);           //调用函数,返回和存入数组C
    for (int i = C.size() - 1; i>= 0; i--) //遍历输出C中元素即为两数和
        cout << C[i] ;
        return 0;
}



vector是一种顺序容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组,它的随机访问快,在中间插入和删除慢,但在末端插入和删除快,而且如果你用.at()访问的话,也可以做越界检查。 

v.push_back(t)  //在数组的最后添加一个值为t的数据

v.size()   //当前使用数据的大小

v.pop_back();  // 弹出容器中最后一个元素(容器必须非空)

v.back();   // 返回容器中最后一个元素的引用

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值