高精度除法

【题目描述】

计算 n/m 的值,设 n,m 为整数,n 的长度小于等于 1000,m 的长度小于等于 15 位,要求精确到小数点后 500 位。如果

整数位为零,则省略小数点前的零

【输入】

两行,每行一个整数

【输出】

一行,保留 500 位小数的实数。

【样例输入】

355

113

【样例输出】

3.14159292035398230088495575221238938053097345132743362831858407079
6460176991150442477876106194690265486725663716814159292035398230088
4955752212389380530973451327433628318584070796460176991150442477876
1061946902654867256637168141592920353982300884955752212389380530973
4513274336283185840707964601769911504424778761061946902654867256637
1681415929203539823008849557522123893805309734513274336283185840707
9646017699115044247787610619469026548672566371681415929203539823008

849557522123893805309734513274336

========================题解=====================

高精度除法。

观察数据,被除数<=1000位需要用数组存储,而除数<=15位,可以用long long存储,所以本题为高精除以低精。

首先,把被除数用char数组读入后再转为int数组,注意这里要正序存储。之后用一个变量来存每步运算的中间值,之后用每一位去除以除数,注意这里的每一步除法的被除数都是本位的值加上上一步除法所得的余数的10倍,这里的余数就是那个中间值。在答案数组中存储本次除法所得的商,再把中间变量的值更新为本次运算的余数。

本题可以将整数部分与小数部分分开处理。

处理完整数部分后,去除答案数组中的前导零再输出,之后单独输出小数点。

小数部分的处理方法与整数部分的类似,只是每次运算的被除数就是上次运算的余数的10倍。本题要求精确到小数点后500位,所以循环终止条件为500即可。

最后再输出小数部分。



转载于:https://www.cnblogs.com/linjia64/p/9607185.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值