C++和C中经常有大数运算,
大数就是,这个long long型都存不下的数嘛。那么怎么对他们进行运算呢。
思想如下:
我们一定要用一个什么来存这个大数的各个位。模拟竖式加减法。从最低位开始,因此我们要将这个存放大数位数的东西倒置过来。
大数加法
比如 1234567+789
就可以写成如下形式
7 6 5 4 3 2 1
9 8 7
7+9=16
6存入新的容器里面去。向下进一个1,依次类推。
大抵模拟就是这样。
我之前是用数组慢慢存放。字符数组转化成整数数组。模拟再加减。这样很好实现,只不过,代码太过于冗杂。今天也是在师父的指导下,开始用string这个类,来写这个大数加减。
虽然先开始我觉得这样写很赖皮,不过实在是,比我之前用的方法简单多了。所以不好意思贴我之前用数组写的代码了。很low.
主要代码如下:
既然说倒置了。。前面可以用reverse() 加法当然首先reverse就好。
string Add(string &a,string &b){
string sum;
int carry=0;
//模仿竖式加法。从低位加起,所以倒置
reverse(a