描述
设计一个算法,计算出n阶乘中尾部零的个数
样例
样例 1:
输入: 11
输出: 2
样例解释:
11! = 39916800, 结尾的0有2个。
样例 2:
输入: 5
输出: 1
样例解释:
5! = 120, 结尾的0有1个。
挑战
O(logN)的时间复杂度
代码部分
public class Solution {
public static long trailingZeros(long n){
long count=0;
long temp=n/5;
while(temp!=0){
count=count+temp;
temp=temp/5;
}
return count;
}
public static void main(String[] args) {
long a=trailingZeros(11) ;
System.out.println(a);
}
}
补充说明
一个数进行因式分解,因子2要远多于因子5,所以说有5必有2,所以每有一个因子5则后边就有一个0