小数的除法面试真题(笔试面试题目1000的阶乘问题)

大数阶乘问题,是很常见的,来看一下T公司的面试题目:

问题一:

1000的阶乘末尾有多少个0?

问题二:

1000的阶乘有多少位数?

问题三:

1000的阶乘的值是多少?

1000的阶乘末尾有多少个0?

直接递归计算吗?有点天真了。1000的阶乘,是一个非常大的数字,得想其它办法了。注意:要求的是1000的阶乘末尾的0的个数,而不是求1000的阶乘。

喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!也可以关注小编的编程雯子,领取资料哦

很显然,从分解质因数的过程来看,结尾的0必然是2和5的乘积,而且在阶乘中,5是稀缺值,而2是富余值,所以,只需要知道质因数中5的个数就行了。我们以26的阶乘为例:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(1)

可见:其中有6个5,有充足的2,所以只需要看5的个数。易知,26的阶乘的末尾有6个0. 用阶乘计算器来看下,果然如此:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(2)

我们来讨论更一般的情况:

设f(x)是x中因数5的个数, [x]为x向下取整的值,则有:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(3)

所以:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(4)

至于程序,给个递归版本吧:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(5)

结果:249. 可见,1000的阶乘末尾有249个0.

喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!也可以关注小编的编程雯子,领取资料哦

1000的阶乘有多少位数?

直接递归计算吗?有点天真了。我们来看下如下规律:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(6)

设f(x)为x的数位个数,[x]为x向下取整的值,则有:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(7)

至于程序,那就很简单了:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(8)

结果:2568. 可见,1000的阶乘有2568位。

1000的阶乘的值是多少?

直接递归计算吗?有点天真了。 还是用字符串来做吧:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(9)

小数的除法面试真题(笔试面试题目1000的阶乘问题)(10)

结果是:

小数的除法面试真题(笔试面试题目1000的阶乘问题)(11)

可以看到,1000的阶乘有2568位,且最后有249个0.

喜欢编程的小伙伴可以加小编的Q群1026782549,进群可以领取免费的学习资料跟源代码哦!也可以关注小编的编程雯子,领取资料哦

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页