3.高精度加法
一般用数组存储一个数
eg:123456789
问题:第0位存1呢,还是存9呢?
回答:第0位存各位比较好。即第0位存9 #便于进位时往数组里添加值
所以数组存储顺序为 9 8 7 6 5 4 3 2 1
大整数用数组存储
运算:模拟人工计算
高精度加法模板:
#include#include using namespace std; //C=A+B vector add (vector & a, vector & b) //加引用是为了提高效率,如果不加引用的话系统会把这个数组在复制一遍 { vector c; int t = 0; for (int i = 0; i < a.size() || i < b.size(); i++) { if (i < a.size()) t += a[i]; if (i < b.size()) t += b[i]; c.push_back(t % 10); t = t / 10; } if (t) //如果还有进位 c.push_back(1); return c; } int main() { string a, b; cin>>a >> b; vector numa, numb; //从后往前遍历每一位 for (int i = a.size()-1; i >= 0; i--) { numa.push_back(a[i] - '0');// -'0'的作用是使char变为数字 } for (int i = b.size()-1; i >= 0; i--) { numb.push_back(b[i] - '0');// -'0'的作用是使char变为数字 } auto c = add(numa, numb); //倒着输出 for (int i = c.size()-1; i >= 0; i--) { cout << c[i]; } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)