高精度除法
Point:
1、公式
$$tmp = tmp * 10 + a[i]$$
2、除法同样逆序输入输出,方便统一格式
3、除法函数里 % 和 / 容易弄混
c.push_back(tmp / b);
tmp %= b;
4、除法算完得到的数组是正序,需要先 reverse 再去前导 0
C++ 代码
#include <iostream>
#include <vector>
#include <algorithm>
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 x;
int b;
cin >> x >> b;
vector<int> a;
int r = 0;
for(int i = x.size() - 1; i >= 0; -- i) a.push_back(x[i] - '0');
a = div(a, b, r);
for(int i = a.size() - 1; i >= 0; i --) cout << a[i];
cout << endl << r << endl;
}