已有 117 人浏览分享
47
14
1999万
版主
#include <iostream> #include <string> #include <algorithm> // 用于反转字符串 using namespace std; // 去除字符串的前导零 string removeLeadingZeros(string str) { // 找到第一个不是 '0' 的字符的位置 size_t pos = str.find_first_not_of('0'); // 如果全是 '0',返回 "0" if (pos == string::npos) { return "0"; } // 去掉前导零 return str.substr(pos); } // 大整数加法 string addBigIntegers(string num1, string num2) { // 去除前导零 num1 = removeLeadingZeros(num1); num2 = removeLeadingZeros(num2); // 确保 num1 是较长的字符串 if (num1.length() < num2.length()) { swap(num1, num2); } // 对齐位数,在较短的字符串前面补零 while (num2.length() < num1.length()) { num2 = '0' + num2; } string result = ""; // 存储结果 int carry = 0; // 进位 // 从最低位开始逐位相加 for (int i = num1.length() - 1; i >= 0; i--) { int digit1 = num1[i] - '0'; // 将字符转换为数字 int digit2 = num2[i] - '0'; int sum = digit1 + digit2 + carry; // 当前位的和 carry = sum / 10; // 计算进位 result.push_back((sum % 10) + '0'); // 将当前位的数字加入结果 } // 如果最后还有进位,添加到结果前面 if (carry) { result.push_back(carry + '0'); } // 反转结果字符串,得到正确的顺序 reverse(result.begin(), result.end()); // 去除结果中的前导零 result = removeLeadingZeros(result); return result; } int main() { string num1, num2; cin >> num1 >> num2; // 输入两个大整数 string result = addBigIntegers(num1, num2); // 计算和 cout << result << endl; // 输出结果 return 0; }
1、转载或引用本网站内容须注明原网址,并标明本网站网址(www.sdzqd.com)。
2、转载或引用本网站中的署名文章,请按规定向原作者支付稿酬。
3、对于不当转载或引用本网站内容而引起的民事纷争、行政处理或其他损失,本网站不承担责任。
4、对不遵守本声明或其他违法、恶意使用本网站内容者,本网站保留追究其法律责任的权利。
唯一网址: https://abc.sdzqd.com/forum.php?mod=viewthread&tid=633
使用道具 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
注册账号后积极发帖的会员
经常参与各类话题的讨论,发帖内容较有主见
经常帮助其他会员答疑
长期对论坛的繁荣而不断努力,或多次提出建设性意见
活跃且尽责职守的版主
为论坛做出突出贡献的会员
0
|手机版|小黑屋|山东智趣岛论坛 ( 鲁ICP备2023024048号 )
GMT+8, 2025-7-1 18:09 , Processed in 0.289655 second(s), 57 queries .
Powered by Discuz! X3.4 Licensed
Copyright © 2001-2020, Tencent Cloud.
客服电话
电子邮件
在线时间:8:00-16:00