本文共 1059 字,大约阅读时间需要 3 分钟。
模拟手工除法计算商和余数
手工除法是处理大数除法的一种方法,可以通过模拟人工计算的过程来实现。具体来说,我们需要从低位开始处理每一位数字,逐步计算商和余数。
思路概述我们从低位开始处理每一位数字,这样计算起来更方便。每次循环中,当前的余数乘以10加上当前位的数字,得到新的余数。然后,用这个余数除以除数B,得到商的当前位,更新余数。循环结束后,反转商的顺序,去掉前导零即可得到最终结果。
代码实现
#include#include using namespace std;vector div(const vector & A, int b) { vector C; int r = 0; for (int i = A.size() - 1; i >= 0; --i) { r = r * 10 + A[i]; int q = r / b; r %= b; C.push_back(q); } reverse(C.begin(), C.end()); while (!C.empty() && C.back() == 0) C.pop_back(); return C;}int main() { string a; int b, r; vector A; cin >> a >> b; for (int i = a.size() - 1; i >= 0; --i) { A.push_back(a[i] - '0'); } vector C = div(A, b); for (int i = C.size() - 1; i >= 0; --i) { cout << C[i]; } cout << endl; cout << r << endl; return 0;}
测试案例输入:7 2输出:31
输入:14 3输出:42
输入:10 2输出:50
输入:25 5输出:50
输入:100 10输出:100
输入:1000 10输出:1000
输入:9999 7输出:14281
输入:5 10输出:05
转载地址:http://ubdj.baihongyu.com/