【C++】高精度加法

#include <iostream>
using namespace std;
int main(){
    string s1,s2;
    //设置最大位数
    int a1[210],a2[210],a3[210]={0};
    //cin >> s1;
    //cin >> s2;
    getline(cin,s1);
    getline(cin,s2);
    //s1,s2逆序存入a1,a2
    for (int i=0;i<s1.size();i++){
        a1[s1.size()-i-1]=s1[i] - '0';
    }
    
    for (int i=0;i<s2.size();i++){
        a2[s2.size()-i-1]=s2[i] - '0';
    }
    
    int len=s1.size()>s2.size()?s1.size():s2.size();
    //诸位相加
    for (int i=0;i<len;i++){
        a3[i]=a1[i]+a2[i];
    }
    //进位
    for (int i=0;i<len;i++){
        if (a3[i]>=10){
            a3[i+1]=a3[i+1]+a3[i]/10;
            a3[i]=a3[i]%10;
        }
    }
    //判断倒序输出位数
    if (a3[len]!=0){
        len++;
    }
    //输出
    for (int i=len-1;i>=0;i--){
        cout << a3[i];
    }
    
    return 0;
}

原理:小学二年级加法算法

洛谷:https://www.luogu.com.cn/problem/P1601

© 版权声明
THE END
点赞8 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容