侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

高精度加法

Hope
2022-02-19 / 0 评论 / 0 点赞 / 380 阅读 / 669 字
温馨提示:
本文最后更新于 2022-02-19,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

有时候在做加法的时候,由于有符号int的范围在-2^31 ~ 2~31-1之间,所以有可能超过int的范围,这时候就需要用字符串来存储数据,然后手动模拟加法的过程,最后把结果输出。

代码:

#include<iostream>
#include<vector>
#include<string>

using namespace std;
string s1,s2;
vector<int> x1,x2;

vector<int> ADD(vector<int> a,vector<int> b){
    vector<int> res;
    int t=0;
    
    for(int i=0;i < a.size() || i<b.size() || t;i++){
        //这样做不需要对齐
        if(i < a.size()) t+=a[i];
        if(i < b.size()) t+=b[i];
        
        res.push_back(t%10);
        t/=10;
    }
    return res;
}
int main(){
    cin>>s1>>s2;
    for(int i=s1.size()-1;i>=0;i--) x1.push_back(s1[i]-'0');
    for(int i=s2.size()-1;i>=0;i--) x2.push_back(s2[i]-'0');
    
    auto C=ADD(x1,x2);
    for(int i=C.size()-1;i>=0;i--) cout<<C[i];
    return 0;
}
0

评论区