算法思想:依旧是模拟人的除法思想,我们将大整数从最高位开始依次除以除数,将得数存入答案数组,同时把余数乘十再加上后位接着相除依次类推。
代码实现:
#include <iostream>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;
vector<int> div(vector<int> &A, int b,int &r)//除法函数
{
vector<int> C;//创建答案数组
r = 0;//用r来储存每位相乘后的得数,以及进位值
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){//必须要去前导 0,因为最高位很可能是 0
C.pop_back();
}
return C;
}
signed main()
{
string a;
int b;
vector<int> A;
cin >> a ;
cin>>b;
for (int i = a.size() - 1; i >= 0; i -- ) A.push_back(a[i] - '0');//存入a的数据
int r;
auto C = div(A, b,r);//调用除法函数
for (int i = C.size() - 1; i >= 0; i -- ) cout << C[i];
cout << endl;
cout<<r;
return 0;
}