C语言十五位正整数相加,C/C++ 超长正整数相加

C/C++ 超长正整数相加

发布时间:2020-07-27 22:07:21

来源:51CTO

阅读:203

作者:sonissa

本题整体思想不难,主要是想好用什么容器去存储计算值和计算结果值,这里用的是字符串,当然也可以用数组,题目链接:https://www.nowcoder.com/practice/5821836e0ec140c1aa29510fd05f45fc?tpId

以下为解答代码(具体细节看注释):

string AddLongInteger(string addend, string augend){

int i = 0,n=addend.size()>augend.size()?n=addend.size():n=augend.size(); //n为较长计算值的长度,用来循环计算时使用

string c; //计算结果保存的值

int temp, tep = 0; //进位值要记得初始化

reverse(addend.begin(), addend.end()); //这里将两个加数都翻转过来计算,主要是为了写入结果的时候可以直接使用‘+=’

reverse(augend.begin(), augend.end()); //当然也可以没有这一步,直接从后往前算

for (; i < n; i++){

int a = i

int b = i

temp = (a+b+tep)% 10; //计算结果值(要填入结果的值)

tep = (a + b + tep) / 10; //进位值

c += temp + 48; // 填入结果

}

if (tep>0){ //若是最后一位计算有进位值,则直接填入结果

c += tep+'0';

}

reverse(c.begin(), c.end()); //将计算结果反过来就是正确结果

return c;

}

int main(){

string a, b, c;

while (cin >> a >> b){

cout << AddLongInteger(a, b) << endl;

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值