【模板】高精度除法

给定两个非负整数A,B,请你计算 A / B的商和余数。

输入格式

共两行,第一行包含整数A,第二行包含整数B。

输出格式

共两行,第一行输出所求的商,第二行输出所求余数。

数据范围

1≤A的长度≤100000,
1≤B≤10000
B 一定不为0

输入样例

1
2
7
2

输出样例

1
2
3
1

模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;


// C = A / b, C是商 , r 是余数
vector<int> div(vector<int> &A, int &b, int &r) // 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(); // 去掉前导0

return C;
}

int main()
{
string a;
int b;
int r;

vector<int> A;

cin >> a >> b;

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 -- ) cout << C[i];

cout << endl << r << endl;

return 0;
}

【模板】高精度除法
https://piscesfinalizer.github.io/2021/01/28/【模板】高精度除法/
作者
PiscesFinalizer
发布于
2021年1月28日
许可协议