如何判断1024!末尾有多少个0
分析:
方法一:暴力法
简单的方法就是就算出1024!的值,然后判断末尾有多少个0.但是这种方法有两个非常大的缺点:第一算法效率非常低下;第二:当这个数字比较大的时候直接计算阶乘可能会导致数据溢出,从而导致计算结果出现偏差。因此,下面给出另外一种比较巧妙的方法。
方法二:因子法
5与任何一个偶数相乘都会增加末尾0的个数,由于偶数的个数肯定比5的个数多,因此1~1024所有的数字中有5的因子的个数决定了1024!末尾0的个数。因此只需要统计因子5的个数即可。此外5与偶数相乘会使末尾增加一个0,25(有两个因子5)与偶数相乘使末尾增加两个0,125(有三个因子5)与偶数相乘会使末尾增加三个0,625(有四个因子5)与偶数相乘会使末尾增加四个0。
实现代码:
package lock;public class T17 {public static int zeroCount(int n){int count=0;while(n>0){n=n/5;count+=n;}return count;}public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.print("1024!末尾的0的个数为:"+zeroCount(1024));}}
运行结果:
算法分析:
由于这种算法循环的次数为n/5,因此算法时间复杂度为O(N)。
引申:如何计算N!末尾有几个0?
从上面的分析可以看出N!末尾的个数为N/5+N/5^2 +N/5^3+…+ N/5^m (5^m<N 且5^(m+1)>N)。
如何判断1024!末尾有多少个0相关推荐
- 【经典智力题】1024! 末尾有多少个0?——“计算阶乘末尾0的数量”问题引出
网上有这样一个广为流传的有趣问题: 1024! 末尾有多少个0? 相应的解法是: 末尾0的个数取决于乘法中因子2和5的个数.显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数. 是5的倍 ...
- 判断N!末尾有多少个0
问题:N的阶乘(N!)中的末尾有多少个0? 例如: N = 5,N! = 120.末尾有1个0. N = 10,N! = 3628800.末尾有2个0. 分析:看到这个问题,有人可能第一反应是先求出N ...
- 每天一道LeetCode-----计算n的阶乘末尾有多少个0
Factorial Trailing Zeroes 原题链接Factorial Trailing Zeroes 计算n!(n的阶乘)末尾有多少个0 思路: 0实际上来源于10,而10来源于2×5,所以 ...
- 编程之美3——N!末尾有多少个0
因为n!是一个非常大的数,所以不能通过常规的方法,求出n!的值之后,再判断它的末尾有多少个0. 这里的关键就是,n!的末尾有多少个0,取决于n!中,质因数 5 的个数. 如:12!=479001600 ...
- nefu 753 n!末尾有多少个0
Problem : 753 Time Limit : 1000ms Memory Limit : 65536K description 计算N!末尾有多少个0 input 输入数据有多组,每组1行,每 ...
- N的阶乘末尾有多少个0
例如:N = 5,N! = 120.末尾有1个0. 分析:想到这个问题,有人可能第一反应就是现求出N!,然后再根据求出的结果,最后得出N!的末尾有多少个0.但是转念一想,会不会溢出,等等. 其实,从& ...
- 1*2*...*1000的末尾有多少个0?(Java实现)
/** * 算法描述: * 分解质因数,即: * 1*2*3*...*1000 = (2*5)*(2*5)*...*(2*5) *(没有匹配的2或5) //其实 ...
- 100 的阶乘末尾有多少个0?
本篇文章是在osChina的代码分享里下载下来的,这里把它整理一下. 前一段时间看到一个往年程序竞赛的题解, 有一个题目说的是求 100 的阶乘末尾有多少个 0. 题解中给出的讲解提到, 一个数 n ...
- 求100000000!末尾有多少个0
**@求100000000!末尾有多少个0 /求100000000!末尾有多少个0 两个数相乘怎么能得到0呢? 只能是25 因为2的个数要远远的多于5 所以说只需要数5的个数即可 */ #includ ...
最新文章
- spark集群使用hanlp进行分布式分词操作说明
- 2021-03-19注解是分功能模块的@ReuqestMapping注解需要依赖的jar为jar-web ,@Autowired注解依赖的是springframework包
- BLE 蓝牙网关与蓝牙定位
- sql安装联机丛书提示发生网络错误_速达软件:安装问题解答
- Map集合 java
- 不重复数字(洛谷 P4305)
- MySQL最基础的操作
- L2TP协议笔记1---L2TP概念及协议流程分析
- Git : 每一行命令都算数
- oralce11g RAC 启动后 CRS-0184: Cannot communicate with the CRS daemon.
- 做java前端需要学习哪些知识,2022最新
- v9更新系统后为何显示服务器连接,红伞V9升级不能……报告里说好多文件无法与服务器建立连接……...
- csrss.exe病毒的清除方法
- 查看编译war包的jdk版本
- 计算机主机报警 声,电脑开机报警4声长鸣解决教程 | 专业网吧维护
- 使用EasyExcel上传下载excel
- mysql identify_MySQL用户授权
- word页眉自动出现一条直线,怎么去掉?
- js根据日期计算星期几
- 《炬丰科技-半导体工艺》SC1/SC2蚀刻后Si表面的分析