【CSDN|每日一练】c++难题-大数加法

举报
海轰Pro 发表于 2023/03/10 12:03:10 2023/03/10
【摘要】 运行结果 题目描述大数一直是一个c语言的一个难题。 现在我们需要你手动模拟出大数加法过程。 请你给出两个大整数加法结果。 输入描述:第一行输入整数n,第二行输入整数m。 (1<=number<=1e100) 输出描述:输出两数加和。 示例 代码完整代码#include <iostream>#include <string>#include <algorithm>using namespac...

image.png

运行结果

image.png

题目描述

大数一直是一个c语言的一个难题。 现在我们需要你手动模拟出大数加法过程。 请你给出两个大整数加法结果。

输入描述:

第一行输入整数n,第二行输入整数m。 (1<=number<=1e100)

输出描述:

输出两数加和。

示例

image.png

代码

完整代码

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

string add(string num1, string num2) {
    int carry = 0;
    string result = "";

    // 反转字符串,方便从低位到高位进行计算
    reverse(num1.begin(), num1.end());
    reverse(num2.begin(), num2.end());

    // 从低位到高位进行加法运算
    for (int i = 0; i < max(num1.length(), num2.length()); i++) {
        int digit1 = i < num1.length() ? num1[i] - '0' : 0;
        int digit2 = i < num2.length() ? num2[i] - '0' : 0;
        int sum = digit1 + digit2 + carry;
        carry = sum / 10;
        sum %= 10;
        result += to_string(sum);
    }

    // 如果还有进位,需要在结果最高位加1
    if (carry) {
        result += to_string(carry);
    }

    // 反转字符串,使其变为正常顺序
    reverse(result.begin(), result.end());

    return result;
}

int main() {
    string num1, num2;
    cin >> num1 >> num2;
    cout << add(num1, num2) << endl;
    return 0;
}

运行结果

在这里插入图片描述

结语

Hello!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
 
ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
 
唯有努力💪

image.png

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。