leetcode-华为专题-172. 阶乘后的零

 

参考:

https://leetcode-cn.com/problems/factorial-trailing-zeroes/solution/xiang-xi-tong-su-de-si-lu-fen-xi-by-windliang-3/

class Solution {
public:
    int trailingZeroes(int n) {
        /*
        可以看出结尾中0的个数由10决定,一个10就是一个0,两个10就是2个零
        10又可以拆分为2、5两个因子,2每隔2个数出现1次,5每隔5个数出现一次,2的次数远多于5
        所以可以直接算5出现的次数,就代表多少对2、5.
        5          每隔5出现一次, n/5代表5出现的次数
        25 = 5 * 5 每隔25出现一次, n/25代表25出现的次数。
        125 = 。。。
        但是记住n/5中已经包括25的两个5中其中一个出现的次数,所以再加上n/25代表另一个5出现的次数即可
        */
        
        int cnt = 0;
        while(n>0){
            cnt = cnt + n/5;  //
            n = n/5; // 更新n,再次n代表n/25、n/125 ....
        }
        return cnt;
    }
};

 

posted @ 2021-08-18 14:56  三一一一317  阅读(40)  评论(0)    收藏  举报