大整数加法的思路是用两个数组储存两个整数的每一位然后分别相加,因为长度很长所以用字符串读入,为方便进位从个位开始储存到数组里,如大整数123456储存时用a【0】储存6;a【1】储存5......以此类推,然后各个位数相加,如果超过10进位。

#include<iostream>
#include<vector>//需要用vector函数,vector是长度可变的数组
using namespace std;
vector <int> add(vector<int> &a,vector<int> &b){
    vector<int> c;
    int t=0;
    for(int 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=t/10;
    }
    if(t)c.push_back(1);
    return c;
}
int main(){
    string A,B;
    cin>>A>>B;
    vector<int> a,b;//开辟两个长度可变的数组来存大整数
    for(int i=A.size()-1;i>=0;i--) a.push_back(A[i]-'0');//从A的最高位开始储存到a中
    for(int i=B.size()-1;i>=0;i--) b.push_back(B[i]-'0');
    vector <int> c=add(a,b); 
    for(int i=c.size()-1;i>=0;i--)printf("%d",c[i]);
    return 0;
}

注:学习acwing上课程整理

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐