给定一个整数 n
,返回 n!
结果中尾随零的数量。
我的思路:尾随零的个数取决于每个乘数可以分解为多少个5相乘,如25可以分成5*5
代码如下:
public int trailingZeroes(int n) { int res = 0; for (int i = 5; i <= n; i+=5) { int val = i; while (val != 0 && val % 5 == 0){ val = val / 5; res++; } } return res; }
结果:
官方给出的优化:
public int trailingZeroes(int n) {
int zeroCount = 0;
long currentMultiple = 5;
while (n > 0) {
n /= 5;
zeroCount += n;
}
return zeroCount;
}
等价于
能被5整除则加一,还能再被5整除就再加一