JavaScript实现LeetCode第172题:阶乘后的零
标签:
JavaScript
首文发表在 172. 阶乘后的零
题目描述
给定一个整数 n,返回 n! 结果尾数中零的数量。
示例 1:
输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.
思路
这个问题可以用数学的方法简单分析;
10 = 2 * 5(质因数分解)
从最末尾开始连续地每出现一个0,即表示有一个 (2 * 5) 组出现。
而对于正整数 N,在[0, N]范围内,质因子中含有 2 的总是会比质因子含有 5 的要多。即如果质因子有 5 的数字总数为 a,那么质因子为2的总数 b >= a。因此,有x个质因子含有 5 的数,就有至少x个含有 2 的数。
于是,只要需要知道质因数含有 5 的数字有多少个,即可知道末尾连续出现 0 的个数有多少
解决方案
/** * @param {number} n * @return {number} */var trailingZeroes = function (n) { let count = 0; // 因为可能出现一个数的质因子有多个5 while (n >= 5) { n = Math.floor(n / 5); count += n; } return count; };
作者:funnycoderstar
链接:https://www.jianshu.com/p/7b0728fb95c9
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦