c++算法大全——(一)高精度计算

c++算法大全——(一)高精度计算,第1张

系列文章目录

1.高精度的计算

2.排序(1)


本篇目录

目录

系列文章目录

本篇目录

前言

一、什么是高精度

1.1 高精度的介绍

1.2 高精度的储存方式

二、高精度的计算

2. 1 加法

2.2 乘法

三、高精度的代码实现

总结


前言

      在c++的学习过程中,有许许多多的计算需要完成,但某些数实在是太大了,int、long long等c++提供的存储空间装不下,那该怎么办呢?于是,高精度计算就出现了。


一、什么是高精度 1.1 高精度的介绍

       高精度的实现十分简单,主要通过数组储存每一位的数字。难点在于其计算,我会在稍后讲解。关于高精度的存储及代码,有几个不同的版本,我将会介绍我认为简单的方法。

1.2 高精度的储存方式

        首先,我们来举一个简单的例子,比如623798,他用高精度存储就为:

a[0]a[1]a[2]a[3]a[4]a[5]a[6]
数值897326

        我们可以看到,高精度的储存是将整个数倒序储存的,方便计算进位时新增一位。那么我们该如何计算呢? 


二、高精度的计算 2. 1 加法

        我们采用的加法方式是先将两个加数同一位相加,不考虑进位,计算完毕后统一进位。什么意思呢?大概可以用下面的表表示。

911111111
+111191911
102221021022

        上面这张表是不考虑进位后得出的结果。接下来我们统一进位。

032203032

        这样,我们就算出了111111119+119191111的结果为230302230,这个结果对不对呢?稍等,让我用计算器算一算。

        

         算的没错,可见我的思路没有问题。

2.2 乘法

        总体思路与加法没什么差别,我就不做过多的解释。

三、高精度的代码实现

        我将会列出加法的核心代码,乘法由大家在此基础上改动。

int temp=max(len1,len2);
for (int i=1;i<=temp;i++)
    ans[i]=a[i]+b[i];
for (int i=1;i<=temp;i++)
{
    ans[i]%=10;
    ans[i+1]+=ans[i]/10;
}

总结

        本篇讲述了高精度的原理及实现,希望能对大家有所帮助。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/2889628.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-09-14
下一篇2022-09-14

发表评论

登录后才能评论

评论列表(0条)

    保存