大数的基本运算
寒假新队员训练计划。 在讲到大数运算前我们先回顾一下我们常用的变量类型的数值范围 类型名称 字节数 取值范围 short int 2 -2^14 ~ 2^14-1 int 4 -2^31 ~ 2^31-1 unsigned int 4 0 ~ 2^32-1 long long 8 -2^63 ~ 2^63-1 unsigned long long 8 0 ~ 2^64-1 0 ~ 18446744073709551615 从中我们可以看到,即使是 unsigned long long ,最大也只能存储 1e19 左右的数 而如果我们被要求进行远大于 1e19 的数的运算,那么常规的做法就无法操作 所以我们引入了一个新的概念——大数 我们可以这么定义它:无法用常规整(浮点)型变量存储,无法进行简单符号运算的数 如:123456789123456789123456789123456789123456789,它就为一个大数 那么现在问你,给你两个大数,要求你对它进行简单(加减乘除)运算,你会怎么做呢? 大数运算模拟 首先我们要考虑如何来把这个数读入并储存。因为是大数,我们无法用以往的int、long long甚至unsigned long long储存 所以我们得先用字符数组对它进行储存。 我们把该大数每一位分解开来分别存到字符数组的每个位置 假设我们用来储存的字符串为S,则对大数