LeetCode 172. Factorial Trailing Zeroes

求 n! 的计算结果有几个后缀0.


可以发现,一个5和一个2的乘积,可以获得一个0. 

考虑10! : 

10! = 362880 有两个后缀0. 这是因为这10个连乘数里,有5和10, 它们分解质因数后可以获得2个5.

注:我们前面提到一个5和一个2的乘积,容易想到的,将这么多的连乘数分解质因数,2的数量是远大于5的数量的

考虑25! : 

这里的5, 10, 15, 20, 25可以分解出6个5, 所以25!应该有6个后缀0.


代码:

class Solution 
{
public:
    int trailingZeroes(int n) 
    {
    	int ret = 0, factor = 1;
    	
    	for ( ; n / pow(5, factor) > 0; ++ factor)
    	{
    		ret += n / pow(5, factor);
    	}

    	return ret;
    }
};


你可能感兴趣的:(LeetCode,C++)