- 如何会在末尾出现0?
- 若能统计出有多少个"2x5"的组合,即可知道后缀有多少0
- 统计所有2的倍数,以及5的倍数,他们的组合均满足上述情况
- 可以发现,在一个周期内2的个数严格小于5的个数
- 因此统计这之中存在多少个5,就可以直到后缀有多少个0
- 怎样统计有多少个5?(比如从1~125之间统计)
- 5 = 1 x 5, 10 = 2 x 5, … ,25 = 5 x 5,…125 = 5 x 5 x 5
- 可以分别是5的倍数的数字的个数,x , 25的倍数的数字的个数y , 125的倍数的数字的个数z
- 但很显然5的倍数是包括25的倍数,也包括125的倍数,因此这里存在重复计数
- 怎样解决重复计数?
- 由于25的倍数能提供 2y数量的5,其中有y数量的5被重复计数,因此25的倍数只能提供y个非重复的5;同理,由于125的倍数能提供3z数量的5,但是由于有z个数在25的倍数中重复计数,以及5的倍数中重复计数。因此125的倍数只能提供z个非重复的5。
- 由上可以知道,非重复的5一共有x+y+z个。
let list =