这是一道很有意思的,本身看了题目感觉还比较简单,算出阶乘之后直接循环取余就行了,但是题目要求时间复杂度是 O(logn) ,这就很奇怪了,但是这个要求也很明显的提示了:不可能是算出阶乘

    一开始我是从二进制考虑,但是二进制乘法实在不是我擅长的,因为没有耐心所以看了评论区

    发现是很有意思(
    有点像脑筋急转弯~~)的一道题,解法是只有乘法的因子中出现偶数乘 5 ,才会有末位的0出现,而常识可以知道,偶数一定比 5 多,所以只需要看这里面有多少个5,就可以了:

    1. class Solution {
    2. public:
    3. int trailingZeroes(int n) {
    4. int res = 0;
    5. while(n > 0){
    6. n /= 5;
    7. res += n;
    8. }
    9. return res;
    10. }
    11. };