一、题目:求出n!中有多少个0.
二、解题思路:n!=1*2*3*...*n.那么会出现0的情况就是有5的时候,比如9!=1*2*3*4*5*6*7*8*9会出现9/5=1个0
10!=1*2*3*4*5*6*7*8*9*10会出现10/5=2个0。那么25!呢,因为25是5*5所以算完1个5后还有一个5即25!=1*2*3*...*25=25/5+25/25=6个0.而125是5*5*5,因此125!=1*2*3*...*125=125/5+125/25+125/125=31个0.找到这个规律,我们写下面的算法:
三、算法实现
package N_zero;
public class Main {
public static void main(String[] args){
Integer result;
result=n_zero(100);
System.out.println(result);
}
public static Integer n_zero(Integer n){
Integer result=0;
while(n>0){
n=n/5;
result=result+n;
}
return result;
}
}
四、时间复杂度
因为每次都是算出n=n/5,所以其时间复杂度为log5n.