尾部的零

题目:

设计一个算法,计算出n阶乘中尾部零的个数算法

样例:

$11! = 39916800$,所以应该返回 2设计

思路:

这是一个数学问题,十进制尾数获得0的只有$2*5$,将阶乘的每一个因素分解质因数,明显获得2的数量多于5的数量,因此,这个问题就变成了有多少个5的问题。
能够是5,25,125...为何这样?好比$26!$:25其实能够分解成2个5相乘,而$26/5$只计算了一个5,所以还要再加$26/25$$.code

参考思路:

class Solution {
public:
    /*
     * @param n: A long integer
     * @return: An integer, denote the number of trailing zeros in n!
     */
    long long trailingZeros(long long n) {
        // write your code here, try to do it without arithmetic operators.
        /*这是一个数学问题,十进制尾数获得0的只有2*5,将阶乘的每一个因素分解质因数,明显获得2的数量多于5的数量,因此,这个问题就变成了有多少个5的问题。能够是5,25,125...为何这样?好比26!:25其实能够分解成2个5相乘,而26/5只计算了一个5,所以还要再加26/25.*/
        long long sum = 0;
        long long t=5;
        while(t<=n){
            sum += n/t;
            t = 5*t;
        }
        return sum;
        
        
    }
};
相关文章
相关标签/搜索