面试题

1. 100!的结果中,末尾有几个0。 2000!末尾有几个0?

要知道有多少个0,实际就是要知道结果里面有10的多少次方 
10=2*5,显然1到n里面,2的个数要远远大于5的个数 
实际就是要我们找出结果里面有5得多少次方,其实也就是算算有多少个5了 

1)假设最接近n的5的幂数是5的a次方这个自然数(那么接近100的也就是5的2次方=25了,a=2) 
2)答案就是a*(n/5的a次方)+(a-1)*(n/5的a次方-n/5的a-1次方)+(a-2)(n/5的a-2次方-n/5的a-1次方-n/5的a次方)+........ 
那么问题的答案就是: 
2*(100/25)+1*(100/5-100/25)=8+16=24个0

---

数学解法
10=5*2
于是,一个整数n中 因子5的个数和因子2的个数的最小值 决定了0的个数。
eg1. 100=2*2*5*5 2个零
eg2. 1200=2*2*2*2*3*5*5 2个零
又2000!中因子5的个数一定少于因子2的个数。
所以 total=[2000/(5^4)]+[2000/(5^3)]+[2000/(5^2)]+[2000/5]
=499

;