您的位置:首页 > 其它

尾部的零,计算出n阶乘中尾部零的个数

2017-08-07 16:42 225 查看

设计一个算法,计算出n阶乘中尾部零的个数

样例

11! = 39916800,因此应该返回 2


思路

也行你觉得很简单,不就是先计算11!=39916800,但是你想想计算11!现在还行,那如果是111111111111!,要计算多少时间呢??
0是怎么出来的,只有2和5相乘的结果才会出现0,以在1到n之间看看有多少个数是2的倍数以及多少个数是5的倍数就行了。
此外,还有一些特殊情况,比如25这种,其是5和5相乘的结果,这种数和4相乘会出现2个0,同理125和8相乘会出现3个0,……,
每个25的倍数又会多一个0。因此125! 的末尾0的个数就是125/5 + 125/5/5 + 125/5/5/5。
就是625的个数,625乘以16会出现4个0,需要再加1,依次类推……


代码

class Solution {
/*
* param n: As desciption
* return: An integer, denote the number of trailing zeros in n!
*/
public long trailingZeros(long n) {
long sum=0;
while(n>0)
{
n/=5;
sum+=n;
}
return sum;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法 设计 阶乘