引言
高精度作为c++里面的一种基础算法,学好它也是必然的,有很多人说高精度只要会背代码就行了。
我认为只要理解了高精度,就会觉得它还是简单的。
什么是高精度
高精度是一种数据范围超级大的数,然后进行相加,相减,相乘,相除…的操作。
高精度加法
读入
首先我们要考虑一个问题,就是怎么读入数据范围超级大的数。想想看,是不是字符串。
那么我们有两种选择,一个是字符数组也就是char a[]; 还有一个是字符串 string a;
两个都差不多,但是字符串不能用str的函数,所以我这里选择的是字符数组。
然后用cin读入。
处理
我们还要考虑的是,怎么让他们相加,总不可能两个字符数组相加吧。
我们这里利用了小学二年级的做法,笔算。
首先将他们转换为整数,存到数组里面,我们其实还有考虑一个问题:
万一数位不一样怎么办?
如果是123+23怎么办(这个数据好算一点,真正的高精度数据有点大)?
小学二年级怎么教的?
个位和个位对齐
那么我们可以把数组的第一位存放个位,最后在倒序输出。
这段代码可以这样写: