高精度除低精度

  1. // vector版本
  2. // A / b = C ... r, A >= 0, b > 0
  3. vector<int> div(vector<int> &A, int b, int &r)
  4. {
  5. vector<int> C;
  6. r = 0;
  7. for (int i = A.size() - 1; i >= 0; i -- )
  8. {
  9. r = r * 10 + A[i];
  10. C.push_back(r / b);
  11. r %= b;
  12. }
  13. reverse(C.begin(), C.end());
  14. while (C.size() > 1 && C.back() == 0) C.pop_back();
  15. return C;
  16. }
  1. //一维数组版本
  2. for (int i = 0, len = a.size(); i < len; i++) A[lena++] = a[i] - '0';
  3. int t = 0;
  4. for (int i = 0; i < lena; i++)
  5. {
  6. C[i] = (t * 10 + A[i]) / B;
  7. t = (t * 10 + A[i]) % B;
  8. }
  9. while (lenc < lena && C[lenc] == 0) lenc++;
  10. if (lenc == lena) lenc--;
  11. for (int i = lenc; i < lena; i++) cout << C[i];
  12. puts("");

例题:1175:除以13

  1. // 除法,数据的读入后,从高位开始计算
  2. // 1. vector<int>模板方法
  3. // 2. 一维数组方法

高精度除高精度

这个先不搞了,在目前阶段不是重点,不花费时间了。有兴趣的同学自行百度。