// A / b = C ... r, A >= 0, b > 0
vector<int> div(vector<int> &A, int b, int &r)//A为高精度数,b为低精度数
{
vector<int> C;
r = 0;
for (int i = A.size() - 1; i >= 0; i -- )
{
r = r * 10 + A[i];//将上次的余数*10在加上当前位的数字,便是该位需要除的被除数
C.push_back(r / b);//所得即为商在这一位的数字
r %= b;
}
reverse(C.begin(), C.end());
while (C.size() > 1 && C.back() == 0) C.pop_back();
//由于在除法运算中,高位到低位运算,因此C的前导零都在vector的前面而不是尾部,vecto
//因此我们将C翻转,这样0就位于数组尾部,可以使用pop函数删除前导0
return C;
}
~~高精度除以低精度
最新推荐文章于 2024-04-11 17:30:39 发布