dcddc

西米大人的博客

0%

尾部的零

题目描述

设计一个算法,计算出n阶乘中尾部零的个数

思路

n阶乘能产生尾数0,换言之就是问n阶乘能乘出多少个10
10分解成两个质数相乘就是:2 * 5
考虑 <=n 的数中,能分解出多少对 2 && 5
分解的2肯定比5多
问题也就转化成了,<=n 的数中,能分解出多少个5
n/5 得到能分解出1个5的个数
n/5/5 得到能分解出两个5的个数

所以一个while循环就可以搞定

代码

1
2
3
4
5
6
7
8
9
public long trailingZeros(long n) {
// write your code her
long count = 0;
while(n / 5 != 0) {
n = n / 5;
count += n;
}
return count;
}

考察点

  • 数学题