算法学习十七----计算n的阶乘中0的个数
来源:互联网 发布:组成数据的基本单位是 编辑:程序博客网 时间:2024/06/01 10:21
题目:给定一个整数n,那么n的阶乘n!末尾有多少个0呢?例如:n=10,n!=362800,n!的末尾有两个0
如果直接计算出n的阶乘再判断的话不仅耗时而且还会有溢出的情况。
首先考虑N!=K*10^M且K不能被10整除,那么就可以知道N!末尾有M个0。再考虑对N!进行质因数分解,N!=(2^X)*(3^Y)*(5^Z)...,由于1-=2*5,所以M只与X和Z有关,每一对2和5就能得到一个10,所以M=Min(X,Z)。不难看出X>Z,因为能被2整除的数比能被5整除的数多得是,所以得出M=Z
所以算法转化为计算1-n的因式分解中5的个数
算法伪代码如下
int Factorialn(int num)for i <- 1 to num j=i while(j%5 == 0) ++count j /= 5;return count;
C++实现
int Factorialn(int num){ int j = 0, count = 0; //for i <- 1 to num for(int i = 1; i <= num; ++i) { //j=i j=i; //while(j%5 == 0) while(j%5 == 0) { //++count ++count; //num/=5 j /= 5; } } return count;}
0 0
- 算法学习十七----计算n的阶乘中0的个数
- 计算N的阶乘中0的个数
- 计算n阶乘中尾部0的个数
- 计算阶乘n!末尾0的个数
- 计算阶乘n!末尾0的个数
- 计算n阶乘中尾部零的个数
- 计算阶乘中0的个数
- 写一个算法计算n的阶乘末尾0的个数
- 计算n的阶乘尾数的0的个数
- 计算阶乘n!末尾的0的个数
- 计算阶乘n!末尾所含的0的个数
- [LeetCode]计算N的阶乘末尾0的个数
- 计算n的阶乘后0的个数
- 算法---面试题/--求N的阶乘N!中末尾0的个数
- 计算阶乘n!末尾所含0的个数
- 计算阶乘n!末尾所含0的个数
- 计算阶乘n!末尾所含0的个数
- 计算阶乘n!末尾所含0的个数
- linux route 实现
- invalid storage class for function "***"
- 长URL链接转短链接算法(JAVA)
- WPF 控件如何绑定资源中的数据
- iOS7—Day by day—Day8:Reading List With SafariServices
- 算法学习十七----计算n的阶乘中0的个数
- VC++编写ActiveX控件
- bash 变量赋值时的异常 No such file or directory
- IntelliJ IDEA 12.0 快捷键(持续更新)
- 柳传志:互联网对传统工业改善多于推翻
- GDB:Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6.x86_64
- 读<如何使Android应用程序获得root权限>有感
- Android各版本市占率:果冻豆Android4.1遥遥领先
- 【动态规划】Move ahead, 初级, LIS 程序完成