博客
关于我
高精度:大数相除
阅读量:177 次
发布时间:2019-02-28

本文共 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/

你可能感兴趣的文章
SQL Server 存储过程分页。
查看>>
OSPFv3:第三版OSPF除了支持IPv6,还有这些强大的特性!
查看>>
OSPF不能发现其他区域路由时,该怎么办?
查看>>
OSPF两个版本:OSPFv3与OSPFv2到底有啥区别?
查看>>
SQL Server 存储过程
查看>>
OSPF在什么情况下会进行Router ID的重新选取?
查看>>
OSPF在大型网络中的应用:高效路由与可扩展性
查看>>
OSPF太难了,这份OSPF综合实验请每位网络工程师查收,周末弯道超车!
查看>>
OSPF技术入门(第三十四课)
查看>>
OSPF技术连载10:OSPF 缺省路由
查看>>
OSPF技术连载11:OSPF 8种 LSA 类型,6000字总结!
查看>>
OSPF技术连载12:OSPF LSA泛洪——维护网络拓扑的关键
查看>>
OSPF技术连载13:OSPF Hello 间隔和 Dead 间隔
查看>>
OSPF技术连载14:OSPF路由器唯一标识符——Router ID
查看>>
OSPF技术连载15:OSPF 数据包的类型、格式和邻居发现的过程
查看>>
OSPF技术连载16:DR和BDR选举机制,一篇文章搞定!
查看>>
OSPF技术连载17:优化OSPF网络性能利器——被动接口!
查看>>
OSPF技术连载18:OSPF网络类型:非广播、广播、点对多点、点对多点非广播、点对点
查看>>
OSPF技术连载19:深入解析OSPF特殊区域
查看>>
SQL Server 复制 订阅与发布
查看>>