LeetCode--172. Factorial Trailing Zeroes
2016-03-05 16:47
555 查看
Problem:
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
Analysis:
对n!做质因数分解n!=2x*3y*5z*… 显然0的个数等于min(x,z),并且min(x,z)==z
证明:
对于阶乘而言,也就是1*2*3*…*n [n/k]代表1~n中能被k整除的个数 那么很显然 [n/2] > [n/5]
(左边是逢2增1,右边是逢5增1) [n/2^2] > n/5^2 …… [n/2^p] >
n/5^p 随着幂次p的上升,出现2^p的概率会远大于出现5^p的概率。
因此左边的加和一定大于右边的加和,也就是n!质因数分解中,2的次幂一定大于5的次幂
还有一点要注意的就是25这种,5和5相乘的结果,所以,还要看n/5里面有多少个5,也就相当于看n里面有多少个25,还有125,625,,,
例如n=25, n!=25*24*23*…15…*10…*5…*1=(5*5)*24*23…(5*3)…(5*2)…(5*1)…*1,其中25可看成5*5,多了一个5,应该加上
//处理这个问题也很简单,首先对n÷5,移除所有的单个5,然后÷25,移除额外的5,以此类推。下面是归纳出的计算后缀0的公式。
//n!后缀0的个数 = n!质因子中5的个数= floor(n / 5) + floor(n / 25) + floor(n / 125) + ….
Answer:
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
Analysis:
对n!做质因数分解n!=2x*3y*5z*… 显然0的个数等于min(x,z),并且min(x,z)==z
证明:
对于阶乘而言,也就是1*2*3*…*n [n/k]代表1~n中能被k整除的个数 那么很显然 [n/2] > [n/5]
(左边是逢2增1,右边是逢5增1) [n/2^2] > n/5^2 …… [n/2^p] >
n/5^p 随着幂次p的上升,出现2^p的概率会远大于出现5^p的概率。
因此左边的加和一定大于右边的加和,也就是n!质因数分解中,2的次幂一定大于5的次幂
还有一点要注意的就是25这种,5和5相乘的结果,所以,还要看n/5里面有多少个5,也就相当于看n里面有多少个25,还有125,625,,,
例如n=25, n!=25*24*23*…15…*10…*5…*1=(5*5)*24*23…(5*3)…(5*2)…(5*1)…*1,其中25可看成5*5,多了一个5,应该加上
//处理这个问题也很简单,首先对n÷5,移除所有的单个5,然后÷25,移除额外的5,以此类推。下面是归纳出的计算后缀0的公式。
//n!后缀0的个数 = n!质因子中5的个数= floor(n / 5) + floor(n / 25) + floor(n / 125) + ….
Answer:
public class Solution { public int trailingZeroes(int n) { int count=0; while(n/5 !=0){ n = n / 5; count += n; } return count; } }
相关文章推荐
- 出现报错duplicate sumbols for architecture armv7 或者linker command failed with exit code 1
- kill and raise Functions
- Win7下实现磁盘软Raid1
- 人工智能学习笔记(一):简述人工智能的应用领域
- error LNK2019: 无法解析的外部符号 _SDL_main,该符号在函数 _main_utf8 中被引用
- How to attach multiple files in the Send Mail Task in SSIS
- linker command failed with exit code 1 (use -v to see invocation)(解决方案)
- saiku 展示优化
- saiku 展示优化
- HDU-2473-Junk-Mail Filter-并查集的删除操作
- [leetcode] 265. Paint House II 解题报告
- 对象(DuoTaiDemo2)
- 对象(DuoTaiDemo1)
- seoreZgniliarTlairotcaF.172
- 如何使用 Rails 和七牛云存储,在 15 分钟内打造一个图片分享社交应用原型
- 对while((pid = waitpid(-1, &stat, WNOHANG)) > 0)不懂的地方,现在懂了
- leetcode217 Contains Duplicate
- 百度地图总结第一篇--环境集成和Hello Baidu_Map实现
- Mybaits源码分析
- svn cleanup 失败 svn cleanup failed–previous opera..