高精度除法C++(Acwing)

高精度除法C++(Acwing)_第1张图片

高精度除法C++(Acwing)_第2张图片

高精度除法C++(Acwing)_第3张图片

代码:

#include 
#include 
#include 

using namespace std;

//C = A / b 商是C,余数是r
vector div(vector &A, int b, int &r)
{
    vector 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();//去掉前导0
    
    return C;
}

int main()
{
    string a;
    int b;
    
    cin >> a >> b;
    vector A;
    for(int i = a.size() - 1; i >= 0; i--) A.push_back(a[i] - '0');

    int r;
    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;
}

你可能感兴趣的:(c++,开发语言)