龙空技术网

笔试面试题目:1000的阶乘问题

编程可儿 156

前言:

如今兄弟们对“大数阶乘c语言程序报告”可能比较重视,你们都想要了解一些“大数阶乘c语言程序报告”的相关文章。那么小编也在网络上汇集了一些有关“大数阶乘c语言程序报告””的相关资讯,希望朋友们能喜欢,同学们快快来了解一下吧!

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

问题一:

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

问题二:

1000的阶乘有多少位数?

问题三:

1000的阶乘的值是多少?

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

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

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

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

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

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

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

所以:

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

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

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

1000的阶乘有多少位数?

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

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

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

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

1000的阶乘的值是多少?

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

结果是:

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

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

标签: #大数阶乘c语言程序报告