首页 > 其他 > 详细

LeetCode 172. Factorial Trailing Zeroes

时间:2015-04-13 12:56:49      阅读:229      评论:0      收藏:0      [点我收藏+]

求 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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!