4条回答 默认 最新
- wallesyoyo 2018-04-02 06:51关注
导致你程序崩溃的原因是: 但是你使用了越界的索引去访问carry数组的元素。修改的话,可以把 carry[i+1] 的地方改为 carry.push_back();
如下:
for(int i=0;i<a.size();i++) { if(a[i]+b[i]>=base) { //carry[i+1] = 1; carry.push_back(1); } else { //carry[i+1] = 0; carry.push_back(0); } }
但是你在考虑进位方面是有逻辑错误的,比如9 + 999,你的结果就是错误的。我在你的基础上改了一下,你参考一下。
Integer add(Integer a,Integer b,unsigned int base) { int len = std::max(a.size(), b.size()); Integer sum = zeros_with_digits(len + 1); if (a.size() < b.size()) { pad_front(a, b.size() - a.size()); } if (a.size() > b.size()) { pad_front(b, a.size() - b.size()); } for (int i = len - 1; i >= 0; --i) { Digit sd = sum[i + 1] + a[i] + b[i]; sum[i + 1] = sd % base; sum[i] = sd / base; } while(sum[0] == 0 && sum.size() > 1) { sum.erase(sum.begin()); } return sum; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥20 对于工程问题的非线性数学模型进行线性化
- ¥15 Mirare PLUS 进行密钥认证?(详解)
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥20 想用ollama做一个自己的AI数据库
- ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
- ¥15 请问怎么才能复现这样的图呀