Leetcode 172. 阶乘后的零
题目
给定一个整数 n,返回 n! 结果尾数中零的数量。
测试样例
示例 1:
输入: 3
输出: 0
解释: 3! = 6, 尾数中没有零。
示例 2:
输入: 5
输出: 1
解释: 5! = 120, 尾数中有 1 个零.
题解
我们考虑一下为什么会出现0,所有的一个0其实都可以归结为25。而且阶乘过程中,2的数量是远大于5的数量的,因此有多少个0其实就转化成了有多少个5。我们再考虑一个5的出现,对于1~n,这些数中,每隔5个数会出来一个5,每隔25个数会再出来一个5(因为55=25,这里会多一个5),每个125个数会再出来一个5(因为555=125,这里又多了一个5)······因此我们就只需要根据这样的规律对5的数量进行统计,详细过程见代码
代码
int trailingZeroes(int n) {
int ans=0;
long x=5;
while(n/x){ //n没有x个数了
ans += n/x;
x *= 5;
}
return ans;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/factorial-trailing-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
版权声明:本文为weixin_43750513原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。