n!表示1*2*3....*(n-1)*n,计算末尾的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
1*2*3*......*688的末尾有多少个0?
5*5*5*5=625,但是5的5次方>688了
所以,a=4
答案就是:
4*([688/625])+3*([688/125]-[688/625])+2*([688/25]-[688/125]-[688/625])+1*([688/5]-[688/25]-[688/125]-[688/625])=4*1+3*3+2*23+110=169个0