AcWing 794. 高精度除法
原题链接
简单
作者:
攒到100w就退休
,
2024-01-10 16:42:53
,
所有人可见
,
阅读 42
C++ 代码 高精度除法
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
/*
参数:
A 除数
b 被除数
r 余数
返回值:
C 商
*/
vector<int> div(vector<int> &A, int b, int &r) {
vector<int> C;
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; // 接收除数大整数A
int b; // 接收被除数B
int r = 0; // 存放余数
cin >> a >> b;
vector<int> A; // 转为数组
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]);
printf("\n%d", r);
return 0;
}
小伙不错,我看好你