c++语言
什么是高精度
有时,我们要做特别大数据的计算。多大呢?几百万位,远远超过了long long的数据范围,直接用long long肯定会溢出。这时候我们就要用高精度算法
PS:python自带高精度
所有高精度算法的基本原理
大体的思路,就是用字符数组(因为字符数组可以达到一个下标对应一个数字,达到按位处理的目的),然后转到整形数组(整型数组才能进行计算)一个下标对应一个数字,用另一个数组进行按位相加。
高精度运算
现在只写高精度加法、乘法。以后会逐渐补充
加法
思路分析
我们用数学竖式的方法来分析
别说这不是高精度,原理一样的,要不你来写个几百万位的竖式(防杠精)
这是小学数学的知识 对应位相加,有进位的加到下一位。
现在,按照刚才的思路进行模拟。仍然是134+84。但存到计算机中,再按位相加,变成了这样:
对于这种错位的情况,我们一般采取的办法是倒序存储(先不说代码如何实现)。于是就是这样:
就是结果也是反着的。但是没关系,我们再进行倒序输出。218,没错!
代码
有了上面的说明,代码就很好懂了。
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int add1=0; //专门处理最后输出时进位的问题
int a[1000]={
},b[1000]={
},c[2000]; //分别对应加数1,加数2,和
char a1[1000],b1[1000];
//1.输入、转换
cin>>a1>>b1;
//因位数可能不同,所以倒序存储要分两次完成
for(int i=0;i<strlen(a1);i++){
a[strlen(a1