高精度算法:
1.适用于数据很大的加减乘除法运算;
2.由于C语言对于数据类型的限制而出现;
3.python由于数据无限制,不存在此类问题
算法处理步骤:
数据存储——>模拟仿真——>进位处理——>数据输出
the first:
既然使用了高精度,说明数据极大,无法用现有数据类型接受,so
我们在存储的时候需要特别处理:
#include<stdio.h> #include<string.h> int main() { char str[1000]; scanf("%s",str); int num[1000]; int len=strlen(str); int i; for(i=len;i>=0;i--)//反向存储,这里需要格外注意,思考一下,为什么要这样做; { num[i]=str[i]-'0'; } return 0; }
这里的处理方法其实就是使用char类型数组,以字符型数组的形式将超大数据接收,在使用ASCII码表将字符转化为一个单独的数,便于后期计算模拟,但是并不改变数在整体数据中的结构。
模拟仿真:其意是说将其按照我们熟悉的数学计算方法来仿真计算。
例如:(加法)
2 4 5
+ 9 2 8
——————
11 6 13
如果按照我们的习惯,我们在计算加法后直接编进位了,但是计算机是无法理解我们的习惯的,所以,我们需要单独处理进位。
似乎这儿没写完,但是我更新了Blog地址,之前的地址失效了,有时间再补吧……
这是大数的计算方法,如果有兴趣,我附上一个超快大数运算算法的介绍:https://zhuanlan.zhihu.com/p/63291883