大数相加算法实现

本文介绍了一种大数相加的算法实现,通过模拟人类手动相加的过程,利用C++语言进行编程。算法思路包括构建存储加数和结果的数组,逐位相加并处理进位,最后将结果转换为字符串输出。核心代码部分并未全部展示,作者期待读者能根据思路自行实现。
摘要由CSDN通过智能技术生成

一、概述

毕业已快半年,想想度过的日子,还是大学时光最安逸。大学时,挺喜欢研究算法,虽然算法很垃圾,但我我就喜欢研究一些有点难度,但经过努力之后我能实现的算法。今天要给大家讲的算法是大数相加,一开始我看到这到算法题,觉得自己可能做不出来,但我还是硬着头皮上了,最终,我还是依照自己的思路解决了这个问题。虽然网上有很多这样的算法,但我就是想把我的思路分享给大家。本文将使用c++语言实现。

二、算法实现思想

思想很简单,就是让计算机模拟人的方式去相加,想想你平时加一个多位的数字是怎么加的,我的算法就是怎么实现的。思想就这么简单,让计算机代替我去计算。
人们计算多位数相加的思路:

   1 2 3 4 5 6 
 +   3 4 5 6 7
 ----------------
   1 5 8 0 2 3

想明白之后,只要让计算机模拟上诉的过程,就可以得到结果了。
具体实现思路:
1. 构建三个数组(一定要将数组初始化为0),第一个数组用来存储第一个加数,第二数组用来存储第二个加数,第三个数组用户存储结果,结果数组的大小必须是最大加数个数加1(有可能进位);
2. 将用户输入的加数拆分,将数字的每一位放入存储加数的数组中;
3. 在实现算法时,从最小的加数个位开始累加,循环次数是最大加数的数个数,将累加的结果放入结果数组中,计算进位;
4. 计算结果的最高位是否有进位;
5. 将结果转为字符串输出(因为是大数,基本数据类型可能存储不下);

示例:

1 用户输入加数 string numA = "123456789"; string numB = "2345689";

2 构建三个数组(结果集一定要大于最大加数位数加1,并且初始化): 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值