高精度除法
2016-02-01 20:40
309 查看
做除法时,每一次上商的值都在0~9,每次求得的余数连接以后的若干位得到新的被除数,继续做除法。因此,在做高精度除法时,要涉及到乘法运算和减法运算,还有移位处理。当然,为了程序简洁,可以避免高精度乘法,用0~9 次循环减法取代得到商的值。显然高精度除法相对是比较麻烦的,由于竞赛中很少涉及高精度数除以高精度数,所以,我们在这里只讨论一下高精度数除以普通整数的算法,采取的方法是按位相除法。
program exam4; const max=200; var a,c:array[1..max] of 0..9; x,b:longint; n1:string; lena,i,j:integer; begin readln(n1); lena:=length(n1); for i:=1 to lena do a[i] := ord(n1[i]) - ord(’0’); readln(b); x:=0; {按位相除} for i:=1 to lena do begin //按位相除 c[i]:=(x*10+a[i]) div b; x:=(x*10+a[i]) mod b; end; j:=1; while (c[j]=0) and (j<lena) do inc(j); {去除高位的0} for i:=j to lena do write(c[i]) ; end.
相关文章推荐
- 美赛matlab编程小总结
- 【UVA】658 - It's not a Bug, it's a Feature!(隐式图 + 位运算)
- 【郑轻 oj】 - 1046: 奇数的乘积
- MySQL中常见字符串操作函数
- freemaker用法
- Struts2之文件上传
- ubuntu安装原生迅雷,让下载成为简单
- Unity问答第4期
- Windows server上rsync的安装和使用
- JavaScript 命名规则
- 机房水题欢乐赛 2016-02-01
- 13 gifGenerator
- Qt核心剖析: 寻找 QObject 的源代码
- MySQLdb的安装与使用
- 华为机试题:字符串替换
- 别拦我,让我悲伤一会
- scala isEmpty 和noEmpty 注意事项
- cocos2d-x3.6 连连看连通画线
- 区间k大数查询
- 10个面向对象设计原则