高精度除低精度
// vector版本
// A / b = C ... r, A >= 0, b > 0
vector<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. 一维数组方法
高精度除高精度
这个先不搞了,在目前阶段不是重点,不花费时间了。有兴趣的同学自行百度。