给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
==================================================================================================
首先是打算把输入的n的阶乘求出来,然后倒序判断有几个零。但是大约超过20,就会发现向上溢出,所以就分析阶乘后的数字里面的尾数的零是如何出现的,比如 3! = 1*2*3 = 6,没有零。5! = 1*2*3*4*5 = 120,有一个零,8! = 1*2*3*4*5*6*7*8 = 40320,有一个零,10! = 1*2*3*4*5*6*7*8*9*10 = 3628800.所以阶乘后数字的零可以由 2,5,10产生,所以就求在阶乘的过程中,有多少个5就可以求出有几个零。
代码:
public static void main(String[] args) {
int n = 30;
System.out.println(trailingZeroes(n));
}
public static int trailingZeroes(int n){
int sum = 0;
while(n > 5){
sum = sum + n/5;
n = n/5;
}
return sum;
}