> 本文均已同步CSDN账号&微博账号,目录见求建议-Ysjt | 唐 ™
一. 什么是高精度算法:
所谓的高精度算法指的是一般来说就是longlong无法解决的问题,一般的高精度算法分别为高精度加法, 高精度减法, 高精度乘法, 高精度除法,今天我们就开将高精度加减法
二. 高精度加法:
一般的高精度加法是一位一位的加,不存在进位,不过这种类型有很明显的局限性,比如当我们计算”1390349405930596094509405+4457842912833947289=?”这道题时,就必须要进位,我们必须要让电脑懂我们的指令,这也就对应了代码中的两层循环[1]:
也许有人会问为什么为什么要给A,B中加a的字符值-0,这就要说到c++的一个知识点:字符串
字符串中的第i个字符的ASCII码值减去0的ASCII码值,相减后的差值就是第i个字符本来所要表示的数字
那么接下来给出例题:
A633.高精度A+B
说实话Python是可以毁掉高精度的
[2]
三. 高精度减法:
在读小学时,我们做减法都采用竖式方法,如图 1 所示。 这样,我们可以写出两个整数相减的算法。
我们就可以用 C++ 语言来模拟这个竖式减法的过程。我们可以考虑利用 C++ 的数组来存储对应数据,假设用数组 A 存储被减数 856 的每一位,具体来说就是 A1 存储个位 6,A2 存储十位 5,A3存储百位 8;类似数组 A 的结构,使用数组 B 存储减数 257;类似数组 A 的结构,使用数组 C 来存储对应的差 599。这样理论上来说,我们就可以计算无限大的数据。如上图 2 所示,下表表示对应的存储方式。
数组A 数组B 数组C [0] 6 7 9 [1] 5 5 9 [2] 8 2 5
总结:利用数组存储,突破存储的限制。每个位置存储 0 ~ 9 之间的数据。
例题:A7871.高精度减法
个人代码(不好见谅!):
相关引用:
C++中的高精度运算-CSDN
「学习笔记」C++ 高精度算法
C++的高精度减法
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1. 代码选自:C++中的高精度运算-CSDN ↩︎
2. 代码选自:C++中的高精度运算-CSDN ↩︎