码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 172. Factorial Trailing Zeroes

时间:2015-04-13 12:57:01      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:leetcode   c++   

求 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 172. Factorial Trailing Zeroes

标签:leetcode   c++   

原文地址:http://blog.csdn.net/stephen_wong/article/details/45023001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!