题解 | #高精度整数加法#

高精度整数加法

https://www.nowcoder.com/practice/49e772ab08994a96980f9618892e55b6

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string sumstr(string str1, string str2)
{
    int pro = 0;
    string sum;
    string dic = "0123456789";
    reverse(str1.begin(), str1.end());
    reverse(str2.begin(), str2.end());
    str2.append(1,'0');
    str1.append(str2.size()-str1.size(), '0');
    for (int i = 0; i < str1.size(); ++i)
    {
        if (((str1[i]-'0')+(str2[i]-'0')+pro) > 9)
        {
            sum += dic[((str1[i]-'0')+(str2[i]-'0')+pro) % 10];
            pro = 1;
        }
        else  
        {
            sum += dic[((str1[i]-'0')+(str2[i]-'0')+pro) % 10];
            pro = 0;
        }
    }
    reverse(sum.begin(), sum.end());
    if (sum[0] == '0')
    {
        return sum.substr(1);
    }
    else
    {
        return sum;
    }
}
int main()
{
    string str1, str2;
    cin >> str1 >> str2;
    if (str1.size() == 0)
    {
        cout << str2;
    }
    else if (str2.size() == 0)
    {
        cout << str1;
    }
    else if (str1.size() < str2.size())
    {
        cout << sumstr(str1, str2);
    }
    else  
    {
        cout << sumstr(str2, str1);
    }
    return 0;
}

取余前面少个括号排查了好久,表达式还是要多加括号

全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务