172. Factorial Trailing Zeroes

来源:互联网 发布:猩球崛起3 知乎 编辑:程序博客网 时间:2024/06/01 13:57

原文题目:

172. Factorial Trailing Zeroes

读题:

求n!的末尾有多少个0。说实话,第一次看到这个题,有点懵,由于需要在O(logn)的复杂度内,当然不能去把n!计算出来,然后仔细想想,末尾0是哪里来的?只有当2*5时才会产生一个0,而在1-n中,2的个数明显要多于5的个数,因为2,4,6,8都含有2,所以只要找到5的个数就行了,但是同样的,比如25是包含5*5两个5的,同样的5^3,5^4也一样,所以还需要判断n/5之后没有没5,一直除以5一直到值为0为止。

采用递归方法,一行代码就搞定了

class Solution {public:    int trailingZeroes(int n) {        return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);    }};


原创粉丝点击