• 當前位置:首頁 > IT技術 > Windows編程 > 正文

    [AcWing 794] 高精度除法
    2022-04-25 22:52:53

    image


    點擊查看代碼
    #include<iostream>
    #include<vector>
    #include<algorithm>
    
    using namespace std;
    
    vector<int> div(vector<int>& A, int b, int &r)
    {
        vector<int> C;
        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;
    }
    int main()
    {
        string a;
        int b;
        cin >> a >> b;
        vector<int> A;
        for (int i = a.size() - 1; i >= 0; i --)    A.push_back(a[i] - '0');
        int r = 0;
        auto C = div(A, b, r);
        for (int i = C.size() - 1; i >= 0; i --)    printf("%d", C[i]);
        cout << endl << r << endl;
        return 0;
    }
    

    1. 用 r 記錄余數,每計算一個新的除法時,res = res * 10 + A[ i ],res * 10 類似于除法操作中把余數挪下來這個操作;
    2. C 記錄的是從高位到低位,要進行反轉,然后去除前導的 0;
    3. div 關于 r 的參數要傳入 & r;

    本文摘自 :https://www.cnblogs.com/

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码