千家信息网

Lintcode2 Trailing Zeros solution 题解

发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,【题目描述】Write an algorithm which computes the number of trailing zeros in n factorial.设计一个算法,计算出n阶乘中尾部
千家信息网最后更新 2025年01月25日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安全错误 数据库的锁怎样保障安全 软件开发服务费可抵扣吗 北京首例网络安全审判案 网络安全手册allison 数据库delete怎么使用 远程链接服务器输入中文特别卡顿 仪陇县几个服务器 湖北安卓软件开发定制费用 orcl查20万条数据库 怎样更新王者荣耀微信数据库 小学开展网络安全法工作方案 数据库同时删除带外键的表 参考哪个数据库不容易被查重 数据库实验12答案 两会 信息化 网络安全 ros服务器管理 创建一个数据库命名为青春纪念册 数据库加入图片 嵩明上门软件开发网上价格 网络安全法法是行政法吗 涪陵区媒体网络技术服务供应商家 ipab连接不到服务器 医疗软件网络安全测试报告 手机怎么修改服务器网关 洛阳软件开发价格 wpssql服务器名称 我的世界多人服务器怎么输密码 网络安全主管简称 创建一个数据库命名为青春纪念册 计算机软件开发要多久 聊城服务器管理系统
0