高精度除法 acwing794

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

vector<int>  div(vector<int> &A,int b,int &r)//r注意带取地址符
{
    
    
	r=0;
	vector<int> C;
	for(int i=A.size()-1;i>=0;i--)
	{
    
    
		r=r*10+A[i];//除法全靠r(余数)来运转 
		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()
{
    
    
	vector<int> C,A;
	int b,r;
	string a;
	cin>>a>>b;
	for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
	C=div(A,b,r);
	for(int i=C.size()-1;i>=0;i--) printf ("%d",C[i]);
	cout<<endl<<r<<endl;
	return 0;
}
// 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;
}

猜你喜欢

转载自blog.csdn.net/qq_47874905/article/details/109456074