首页 > 编程语言 > 详细

大整数加法C++(计蒜客)

时间:2020-07-11 18:48:12      阅读:38      评论:0      收藏:0      [点我收藏+]

求两个不超过 200200 位的非负整数的和。

输入格式

有两行,每行是一个不超过 200200 位的非负整数,可能有多余的前导 00。

输出格式

一行,即相加后的结果。结果里不能有多余的前导 00,即如果结果是 342342,那么就不能输出为 03420342。

输出时每行末尾的多余空格,不影响答案正确性

样例输入

22222222222222222222
33333333333333333333

样例输出

55555555555555555555
原题的地址https://nanti.jisuanke.com/t/T1098

代码:
#include <iostream>
#include<string>
using namespace std;
int main()
{
    string str1,str2;
    cin >> str1 >> str2;//保存两个数字
    int d = 0;//进位
    int str3[210];
    int i = 0;
    int a, b;
    for (;i < str1.length() ||i< str2.length();++i)
    {
        if (i >= str1.length())
        {
            a = 0;
       }
        else   a = str1[str1.length() - 1 - i] - (int)0;
        if (i >= str2.length())
        {
            b = 0;
        }else b = str2[str2.length() - 1 - i] - (int)0;
        int c = a + b+d;
        if (c >= 10) d = 1;
        else d = 0;
        str3[i] = c%10;
    }
    if (d == 1)
    {
        str3[i] = 1;
        i++;
    }
    bool flag = 0;//判断第一个数是不是0
    for (int j = i-1;j >=0;--j)
    {
        if (str3[j] != 0 || flag)
        {
            flag = 1;
            cout << str3[j];
        }
       
    }
    if (!flag) cout << 0;//这点千万不能忘记
    return 0;
}

有任何问题可以下面留下你的评论或者加我QQ274062198

 

大整数加法C++(计蒜客)

原文:https://www.cnblogs.com/liushipeng648/p/13284407.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!