因为一个数的阶乘只有是5或5的倍数乘以2的时候才会出现尾随零,并且从阶乘中可以看出来2的个数远大于5的个数,所以由此可以推得求一个数的尾随零数的个数只需看它能除以几个5就有几个零了。
从算法二可以知道本质就是求可以整除5的个数,可以得到
其中[N/5]表示不大于N中对5倍的贡献一个5,[N/5/5]表示不大于N的数中对5*5的倍数贡献一个5......
import java.util.*;
public class Solution {
/**
* the number of 0
* @param n long长整型 the number
* @return long长整型
*/
public long thenumberof0 (long n) {
long sum = 0;
int k = 5;
while (n > 0) {
sum += n / k;
n = n / k;
}
return sum;
}
}


京公网安备 11010502036488号