原题链接:
794. 高精度除法 - AcWing题库https://www.acwing.com/problem/content/796/思路:
因为除法是从高位开始的,所以思路更乘法很像的同时有又有一点不同
若单纯的只写除法的话,正序做起来更加方便
但是大多数的题目都会把加减乘除进行结合,所以这里使用的还是倒序运算
上代码
#include <bits/stdc++.h>
using namespace std;
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;
}
int main ()
{
string a;
int b;
cin >> a >> b;
vector<int> A;
int r;
for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
auto C=div(A,b,r);
for(int i=C.size()-1;i>=0;i--) printf("%d",C[i]);
cout << endl;
cout << r << endl;
return 0;
}
值得注意的是,因为是倒序的计算,所以返回的时候需要逆序一下
然后再进行前导0的排除,最终返回答案