~~高精度除以低精度

// 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;
}
发布了99 篇原创文章 · 获赞 198 · 访问量 9415

猜你喜欢

转载自blog.csdn.net/weixin_45884316/article/details/104233006