高精度算法(加法和乘法)
int占32位,4个字节,所以int的范围是[-231,231 -1],数量级为10^9
long long占64位,范围是[-263,263 -1],数量级为10^18
如果超过了long long 的数据范围,怎么办?——高精度
我这里只介绍加法和乘法,减法和除法大家可以安按照步骤自己思考
高精度算法的定义
当数大到连long long都存不下时,可以使用高精度。高精度算法实质上就是在模拟数学中的列竖式计算,处理进位等
高精度加法
想想我们小学学的加法列竖式计算,从从低位算起,加起来的结果满十进一,其实这很简单就是用代码表示会比较难
思路
第一步,读取数据,将整数翻转存入数组,先读入两个字符串,再将每一位-'0'的ASCII码就可以得到对应数字了
第二步,各位相加并进位,先将这两位上的数字相加,再加上上一位的进位,然后判断和是否大于等于10,是的话就将进位(c[i]/10)存储到一个变量里,否则将此变量置0
第三步,删除前导零,从高位开始找,如果有一个为不等于0,将此位置记下并结束循环,输出时从此位置开始
第四步,输出,注意:从第三步标记的那个位置开始
有疑惑了是吧?第一步为什么要倒着存储呢?想想竖式计算,按位对齐&#