leetcode---阶乘尾数
一、问题描述
设计一个算法,算出 n 阶乘有多少个尾随零。
示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零。
示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数中有 1 个零.
说明: 你算法的时间复杂度应为 O(log n) 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/factorial-zeros-lcci
二、题目分析
题目要求时间复杂度为O(log n),因此不能使用循环求出阶乘在统计尾数0的个数。
分析可知,一个数的末尾的0是由10构造出来的(只有当末尾是10时才会产生进位,并在末尾留下一个0),而10可以分解成2*5,因此求n的阶乘中末尾0的个数就是求1~n中2*5的个数;其他任何可以产生0的组合都可以分解成2*5,例如4*5也可以产生一个末尾的0,而4*5可以分解成2*(2*5);根据上边两条可以知道,我们实际要求的是可以产生2*5的对数;普通的5的倍数,只可以产生一个*5,例如30=5*6,而特殊的25=5*5可以产生两个*5,125=5*5*5可以产生三个*5;因此,本题可以转换为求能产生2*5的质因数的个数,例如1*2*3*4*5*6*7*8可以产生一个2*5,因此8的阶乘尾数中含有1个0;又因为,质因数2的个数一定比质因数5的个数多,因此本题可以直接转换成求质因数5的个数。
三、代码描述
class Solution {
public:int trailingZeroes(int n) {//只有当遇到25、125这样的数时,需要考虑这些数中含有多个质因数5//经过分析我们可以发现,当一个数除5后的结果在这整除5后的结果如果为0,说明这个数在[0,24],当第二次除5后的结果是1说明这个数在[25,124],依次类推,可以写出如下代码int ret = 0;while(n){ret += n/5;n /= 5; } return ret; }
};
leetcode---阶乘尾数相关推荐
- 1083: 阶乘尾数零的个数
时间限制 : 1.000 sec 内存限制 : 128 MB 题目描述 阶乘是基斯顿·卡曼(Christian Kramp, 1760-1826)于1808年发明的运算符号,是数学术语.正整数阶乘指 ...
- 程序员面试金典 - 面试题 16.05. 阶乘尾数(5的因子)
1. 题目 设计一个算法,算出 n 阶乘有多少个尾随零. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零.示例 2: 输入: 5 输出: 1 解释: 5! = 120, 尾数 ...
- 力扣面试题16.05.阶乘尾数
题目描述 设计一个算法,算出 n 阶乘有多少个尾随零. 示 例 示例 1:输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零.示例 2:输入: 5 输出: 1 解释: 5! = 120, 尾 ...
- javaScript 阶乘尾数
设计一个算法,算出 n 阶乘有多少个尾随零. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. /*** @param {number} n* @return {number ...
- 算法-阶乘尾数零的个数
输入一个正整数n,求其阶乘位数0的个数,比如n为10,输出2,n为100,输出24. #include <stdio.h> #include <stdlib.h> void m ...
- 求n阶乘尾数中有多少个零
方法1:暴力解 求出n的阶乘,并将该结果通过一次while循环判断,若n%10==0,count++,并将n/=10,退出循环后返回count的值即可.这种方式虽然容易理解,但对于较大的n而言,求出阶 ...
- 力扣刷题-阶乘尾数有多少个0
设计一个算法,算出 n 阶乘有多少个尾随零. 你算法的时间复杂度应为 O(log n) . 显然,暴力是不符合题意的,效率为o(n)所以pass掉暴力,然后我开始也没想出来,查了会资料,结果发现几乎所 ...
- LeetCode 793. 阶乘函数后K个零(二分查找)
1. 题目 f(x) 是 x! 末尾是0的数量.(回想一下 x! = 1 * 2 * 3 * ... * x,且0! = 1) 例如, f(3) = 0 ,因为3! = 6的末尾没有0:而 f(11) ...
- C#LeetCode刷题-程序员面试金典
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-程序员面试金典 | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode程序员面试金典 ...
最新文章
- 算法之【仿竖式算法】
- linux mrtg 进程名称,Linux上的MRTG流量监控中心
- 微信小程序跳转页面后onload中获取到的参数值和跳转页面时传的参数不一样
- 谷歌浏览器书签栏怎么隐藏 谷歌Chrome浏览器书签栏隐藏教程
- 《UG NX8.0中文版完全自学手册》一2.4 布局
- 小米手机 - Charles无法安装证书 因为无法读取证书
- 车轮轴承行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- 服务器来电后自动开机|xfs文进系统备份恢复linux下误删除的文件
- Atitit 可读性技术与实践范例 艾提拉著 目录 1. 提升可读性的技术类	2 1.1. 本地化命名封装	2 1.2. 表格映射表代替选择	2 1.3. 1.2. Dsl	提升抽象到dsl级别	2
- JavaAPI在线帮助文档
- 关于 车机U盘音乐歌曲名显示乱码bug 的解决方法
- 鹏保宝 v7.1.0 官方版
- JavaSE数组基础练习题
- 导出chrome扩展插件,crx文件
- 高考放榜季 | 知道创宇全方位保障教育政务网站安全可用
- margin失效问题——嵌套块元素引起的外边距坍塌
- 解决麒麟系统安装mysql后登录错误:‘Access denied for user ‘root‘@‘localhost‘
- Flink触发器Triggers
- 数字人民币智能合约的一个颠覆式创新应用
- Linux下退出vi编辑模式