public class Solution {
public int trailingZeroes(int n) {
int ret=0;
while(n>0)
{
ret += n/5;
n = n/5;
}
return ret;
}
}
题目要求我们找到n的阶乘中末尾0的个数....
连乘中末尾0的个数由乘数中10的个数决定,因式分解后实际上相当于min( num(2),num(5) )(即因子中2和5个数的最小值)。显然阶乘中因子2的个数是充足的,所以因子5的个数就是最终的解。
而每个5的倍数都会贡献一个5,每个25的倍数又会多贡献一个5.....那么我们不妨while考虑一下即可。