阶乘尾零

题目描述

请设计一个算法,计算n的阶乘有多少个尾随零。

给定一个int n,请返回n的阶乘的尾零个数。保证n为正整数。

测试样例:
5

返回:1

时间限制:3秒空间限制:32768K

解析:常规解法计算出结果之后再进行计算得到0的个数是时间超限的,因此应该寻求跟简单的方法,计算得到0的个数,可以理解成阶乘结果可以分解出多少个10相乘,而10又是2和5相乘的结果。因此,只要计算出1-n中有多少个2和5即可,因2的个数会远大于5的个数,即知道5的个数既可以得到0的个数。
如100,100/5=20,20/5=4,4/5=0。因此100中5的个数为20+4+0=24个。
public int getFactorSuffixZero(int n){
		int count = 0;
		while(n/5 != 0){
			count += n/5;
			n = n/5;
		}
		return count;
	}

  

原文地址:https://www.cnblogs.com/woniu4/p/4686091.html