高精度算法求阶层详解

求N!的值 【问题描述】     用高精度方法,求N!的精确值(N以一般整数输入)。

【输入样例】ni.in    10

【输出样例】ni.out    3628800

本题解题障碍在于,受数据类型取值范围的限制,当N值很大时,阶层的结果放到变量中会造成数据溢出。

解题思路:

        将相乘的结果,以单个的数字逆序存在int[ ] f数组里,f[0]存放当前数组的有效长度。求阶层的每一步中,都是用当前数字乘以数组中的每位数字,因为是逆序存放,所以从f[1]开始乘,每一位乘完的数字处理好进位。

        单步过程以5040*8举例如下(省略了存放有效位数的f[0]):

        step1:

------------------------------------------------------------------

        step2:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值