N的阶乘中末尾有几个0

面试题目: 给定一个数n,求1*2*3*…*n 结果中末尾0的个数。

思路:首先思考一个问题,一个数末尾有几个0的是不是可以等价于一个数能整除几次10呢,因为10是有2×5组成的,那么我们也就可以理解为这个数有几对2和5的组合的话,那么他就能等价于有几个0。

举个例子:比如50=2×5×5,那么他有一对(2,5),所以它有1个0

那么现在又有一个问题是:我们如何得到1×2×….×n之中有几对2和5呢,显然我们能通过观察得到2的个数是远远大于5的个数的,那么就可以说我们确定5的个数的话,就能确定有几对2和5了。

如何确定5的个数:我们知道显然只有5的倍数才能得到5,例如20!中5,10,15,20都能得到5,但是还有情况就是当出现5×5的时候那么就会多一个5,所以我们不能单纯的只是用n/5,还要相应的去/25、/125…,这样我们就能得到n!中有多少个5了,这道题也就解决了。

,幸福不是因为你拥有得多,而是由于你计较得少。

N的阶乘中末尾有几个0

相关文章:

你感兴趣的文章:

标签云: