共计 364 个字符,预计需要花费 1 分钟才能阅读完成。
给定一个整数 n,返回 n! 后果中尾随零的数量。
提醒 n! = n (n – 1) (n – 2) … 3 2 1
// 首先,一个数只有因子含有 10 才会有尾随 0
// 其次,10 能够由 2 和 5 两个质数相乘失去
// 之后,因为任何一个整数的阶乘蕴含因子 2 的个数都大于因子 5 的个数
// 所以,最终只须要统计 n! 含有多少个因子 5
// 拿 1000!举例,1~1000, 其中含有 1000/5,即 200 个 5 的倍数
// 若这 200 个数都含有 1 个因子 5,那间接返回 200 就好
// 然而含有因子 5 的个数有不止一个的
// 所以须要计算含有 2 个的,也就是能被 25 整除的
// 以此类推再计算含有 3 个的,直到被除数大于 n 完结
public int trailingZeroes(int n) {
int res = 0, tmp = 5;
while (tmp <= n) {
res += n / tmp;
tmp *= 5;
}
return res;
}
正文完