Lintcode2 Trailing Zeros solution 题解
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,【题目描述】Write an algorithm which computes the number of trailing zeros in n factorial.设计一个算法,计算出n阶乘中尾部
千家信息网最后更新 2026年11月03日Lintcode2 Trailing Zeros solution 题解
【题目描述】
Write an algorithm which computes the number of trailing zeros in n factorial.
设计一个算法,计算出n阶乘中尾部零的个数。
【题目链接】
http://www.lintcode.com/en/problem/trailing-zeros/
【题目解析】
传统解法是首先求出n!,然后计算末尾0的个数。(重复÷10,直到余数非0)该解法在输入的数字稍大时就会导致阶乘得数溢出,不足取。
O(logn)解法:一个更聪明的解法是考虑n!的质数因子。后缀0总是由质因子2和质因子5相乘得来的。如果我们可以计数2和5的个数,问题就解决了。考虑下面的例子:
n = 5: 5!的质因子中 (2 * 2 * 2 * 3 * 5)包含一个5和三个2。因而后缀0的个数是1。
n = 11: 11!的质因子中(2^8 * 3^4 * 5^2 * 7)包含两个5和三个2。于是后缀0的个数就是2。
我们很容易观察到质因子中2的个数总是大于等于5的个数。因此只要计数5的个数就可以了。那么怎样计算n!的质因子中所有5的个数呢?一个简单的方法是计算floor(n/5)。例如,7!有一个5,10!有两个5。除此之外,还有一件事情要考虑。诸如25,125之类的数字有不止一个5。例如,如果我们考虑28!,我们得到一个额外的5,并且0的总数变成了6。处理这个问题也很简单,首先对n÷5,移除所有的单个5,然后÷25,移除额外的5,以此类推。
【参考答案】
http://www.jiuzhang.com/solutions/trailing-zeros/
个数
因子
解法
后缀
题目
三个
两个
数字
问题
阶乘
聪明
不足取
以此类推
事情
传统
余数
例子
单个
就是
尾部
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司经营范围
科技互联网企业
深圳恒合互联网络科技有限公司
科技与互联网
互联网科技垄断
上海互联网科技有限公司
上海卓越科技 互联网
广西拼得多互联网科技有限公司
深圳国际航运科技和互联网
银川新华互联网科技职业技术培训学校图片
互联网为啥属于高科技
千方科技属于互联网企业吗
中国互联网十大科技股排名
洛阳共同富裕互联网科技有限公司
互联网数据科技专业
互联网方面的科技前沿
张召忠谈中国互联网科技
上海乐五互联网科技有限公司
普陀区互联网教育科技管理办法
科技互联网企业在行动
科技创新与互联网经济
互联网为科技
互联网 卓越科技
杭州互联网科技公司
菲比寻常互联网科技
万达互联网科技
赶超互联网科技 微信多开
长沙互联网科技
江苏苏星互联网科技有限公司
互联网硬科技公司