为何使用高精度
我们知道,在C++里,就算是最大的unsigned long long也只能存储0~18446744073709551615的数,那么如果题目要你存储一个1000位的数,那该怎么办呢?
所以这时候,我们就要用到高精度了。
高精度的存储
上文提到,题目可能会让你存储一个 1000 位的数。位数这么多,该有什么数据类型存储呢?可以用字符数组char a[1005],不过最好的选择是字符串。因为除非你的内存耗尽,字符串的长度几乎是可以无限长的。不像数组,int类型的数组int a[],长度最多只能开到100000000。所以,本文所有高精度的代码都是string做法,特此声明。
言归正传,我们可以把输入高精度的过程写在一个void类型的函数read()里,注意:要逆序存储!!!
当我们输入一个数时(string类型),我们先要记下它的长度,也就是这个数的位数(原因我们会在高精度的输出时讲解),将长度存储到数组a[0]。接着我们会将这个数的每个数位逆序存储(如图)。
代码
void read(int a[]){
string s; //使