高精度除低精度
// vector版本// A / b = C ... r, A >= 0, b > 0vector<int> div(vector<int> &A, int b, int &r){vector<int> C;r = 0;for (int i = A.size() - 1; i >= 0; i -- ){r = r * 10 + A[i];C.push_back(r / b);r %= b;}reverse(C.begin(), C.end());while (C.size() > 1 && C.back() == 0) C.pop_back();return C;}
//一维数组版本for (int i = 0, len = a.size(); i < len; i++) A[lena++] = a[i] - '0';int t = 0;for (int i = 0; i < lena; i++){C[i] = (t * 10 + A[i]) / B;t = (t * 10 + A[i]) % B;}while (lenc < lena && C[lenc] == 0) lenc++;if (lenc == lena) lenc--;for (int i = lenc; i < lena; i++) cout << C[i];puts("");
例题:1175:除以13
// 除法,数据的读入后,从高位开始计算// 1. vector<int>模板方法// 2. 一维数组方法
高精度除高精度
这个先不搞了,在目前阶段不是重点,不花费时间了。有兴趣的同学自行百度。
