题目链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1175
思路:直接复用 高精度除低精度 的代码即可。
#include <iostream>
#include <string>
#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());
// 删除前导0
while (c.size() > 1 && c.back() == 0)
{
c.pop_back();
}
return c;
}
int main()
{
string A;
cin >> A;
vector<int> a, c;
// 逆序存储
for (int i = A.size() - 1; i >= 0; i--)
{
a.push_back(A[i] - '0');
}
int r;
c = div(a, 13, r);
// 商,逆序输出
for (int i = c.size() - 1; i >= 0; i--)
{
cout << c[i];
}
cout << endl;
// 余数,逆序输出
cout << r << endl;
return 0;
}