791.高精度加法 做题笔记

本文详细介绍了C++中vector的使用,string数组操作,以及auto关键字在类型推导中的应用。通过实例展示了如何将大整数转换为字符串,利用vector进行逐位相加,并处理进位过程。
摘要由CSDN通过智能技术生成

注意题目给的数据范围是整数长度也就是位数。

复习:

1.c++的vector用法

2.string字符串数组用法。

3.auto关键字用法。使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。因此auto并非是一种"类型"的声明,而是一个类型声明时的"占位符”,编译器在编译期会将auto替换为变量实际的类型。

主函数部分:因为给定整数较大,设置成string字符串数组类型,再逐个放入vector<int>容器,放入时注意将字符数组的数转换成为整数类型,即a[i]-'0'。

个位数存在数组下标为0的位置,往后以此类推,这样方便进位(若进位直接在数组尾端添加)。

模板函数部分:创建新容器C用来存放答案。t表示目前位的数的大小,模10表示把个位直接填到新数组,t自身除以10保留是否有进位。循环条件是A容器还有数或者B还有数,循环内再具体判断还有哪个剩余数。循环结束后判断是否有进位,若有则填到C容器末端。

#include<iostream>
#include<vector>
using namespace std;
vector<int> add(vector<int>&A,vector<int>&B){
    vector<int> C;
    int i,t=0;
    for(i=0;i<A.size()||i<B.size();i++){
        if(i<A.size()) t+=A[i];
        if(i<B.size()) t+=B[i];
        C.push_back(t%10);
        t/=10;
    }
    if(t) C.push_back(1);
    return C;
}
int main(){
    string a,b;
    int i;
    vector<int>A,B;
    cin>>a>>b;
    for(i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
    for(i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');
    auto C=add(A,B);
    for(i=C.size()-1;i>=0;i--) cout<<C[i];
    return 0;
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值