阶乘末尾0的个数(证明)
先给出算法:
给定n,求n的阶乘末尾0的个数。
int res = 0; while (n > 0) { res += n / 5; n /= 5; }
因为:
比方说求15的阶乘,也就是求
1 × 2 × 3 × 4 × 5 × 6 × 7 × 8 × 9 × 10 × 11 × 12 × 13 × 14 × 15 的末尾0的个数。现在我们把这15个数分解出来含有5的因子
1 × 2 × 3 × 4 × 5 × 6 × 7 × 8 × 9 × 2 × 11 × 12 × 13 × 14 × 3
× 5 × 5
每有一个5,阶乘末尾就会多出来一个0,这样n / 5就能统计完第一层5的个数,依次处理,就能统计出来所有5的个数。
我每天都在努力,只是想证明我是认真的活着.