172. Factorial Trailing Zeroes
2016-05-04 08:34
429 查看
Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
对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](左边是逢4增1,右边是逢25增1)
……
[n/2^p] > [n/5^p](左边是逢2^p增1,右边是逢5^p增1)
随着幂次p的上升,出现2^p的概率会远大于出现5^p的概率。
因此左边的加和一定大于右边的加和,也就是n!质因数分解中,2的次幂一定大于5的次幂
Note: Your solution should be in logarithmic time complexity.
对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](左边是逢4增1,右边是逢25增1)
……
[n/2^p] > [n/5^p](左边是逢2^p增1,右边是逢5^p增1)
随着幂次p的上升,出现2^p的概率会远大于出现5^p的概率。
因此左边的加和一定大于右边的加和,也就是n!质因数分解中,2的次幂一定大于5的次幂
class Solution { public: int trailingZeroes(int n) { int re = 0; while(n) { re += n / 5; n = n / 5; } return re; } };
相关文章推荐
- lightoj1282 - Leading and Trailing(水题)
- 百度地图 baiduMap(二) 定位
- proxychains-ng 工作原理分析
- mailyWindef.h
- Session 'MainActivity': Error Launching activity
- zzulioj--1842--LT的求助again and again(模拟||LIS)
- OpenAI Gym 关于CartPole的模拟退火解法
- hdu3089 Josephus again(快速约瑟夫环)
- Responder Chain简析
- main()是程序运行的第一个函数吗?
- 小何讲进程: 阻塞进程函数 wait()和waitpid()
- 操作系统raid
- POJ-3216-Repairing Company(最小路径覆盖)
- wait和waitpid函数
- POJ 1422 Air Raid
- Air Infomation System 基于控制台的航班信息系统(方法总结)
- Intel S5000VSA(SAS)主板设置RAID 步骤【转】
- linker command failed with exit code 1 (use -v to see invocation)
- WM_PAINT 消息与 OnDraw、OnPaint()
- IDEA快捷键 如syso(sout Tab键)main(psvm Tab键)