高精度除法
按顺序开始计算
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// c = A / b c是商,余数为r
vector<int> div(vector<int> A,int b,int &r)
{
vector<int> c;
r = 0;
for (int i = 0; i < A.size(); i++)
{
r = r * 10 + A[i];
c.push_back(r / b); // 加入商的结果
r = r % b; // 更新本次余数
}
reverse(c.begin(),c.end()); // 逆序一下
while (c.size() > 1 && c.back() == 0) c.pop_back(); //去掉前导零
reverse(c.begin(),c.end());// 再逆序回来
return c;
}
int main()
{
string a;
int b;
cin >> a >> b;
vector<int> A;
// 逆序存储
for (int i = 0; i < a.size(); i++ ) A.push_back(a[i] - '0');
int r;
auto c = div(A,b,r);
// 逆序输出
for (int i = 0 ; i < c.size(); i++) cout << c[i];
cout << endl << r << endl;
return 0;
}