分析:

方法一:暴力法

  简单的方法就是就算出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相关推荐

  1. 【经典智力题】1024! 末尾有多少个0?——“计算阶乘末尾0的数量”问题引出

    网上有这样一个广为流传的有趣问题: 1024! 末尾有多少个0? 相应的解法是: 末尾0的个数取决于乘法中因子2和5的个数.显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数. 是5的倍 ...

  2. 判断N!末尾有多少个0

    问题:N的阶乘(N!)中的末尾有多少个0? 例如: N = 5,N! = 120.末尾有1个0. N = 10,N! = 3628800.末尾有2个0. 分析:看到这个问题,有人可能第一反应是先求出N ...

  3. 每天一道LeetCode-----计算n的阶乘末尾有多少个0

    Factorial Trailing Zeroes 原题链接Factorial Trailing Zeroes 计算n!(n的阶乘)末尾有多少个0 思路: 0实际上来源于10,而10来源于2×5,所以 ...

  4. 编程之美3——N!末尾有多少个0

    因为n!是一个非常大的数,所以不能通过常规的方法,求出n!的值之后,再判断它的末尾有多少个0. 这里的关键就是,n!的末尾有多少个0,取决于n!中,质因数 5 的个数. 如:12!=479001600 ...

  5. nefu 753 n!末尾有多少个0

    Problem : 753 Time Limit : 1000ms Memory Limit : 65536K description 计算N!末尾有多少个0 input 输入数据有多组,每组1行,每 ...

  6. N的阶乘末尾有多少个0

    例如:N = 5,N! = 120.末尾有1个0. 分析:想到这个问题,有人可能第一反应就是现求出N!,然后再根据求出的结果,最后得出N!的末尾有多少个0.但是转念一想,会不会溢出,等等. 其实,从& ...

  7. 1*2*...*1000的末尾有多少个0?(Java实现)

    /** * 算法描述: * 分解质因数,即: * 1*2*3*...*1000 = (2*5)*(2*5)*...*(2*5)                     *(没有匹配的2或5) //其实 ...

  8. 100 的阶乘末尾有多少个0?

    本篇文章是在osChina的代码分享里下载下来的,这里把它整理一下. 前一段时间看到一个往年程序竞赛的题解, 有一个题目说的是求 100 的阶乘末尾有多少个 0. 题解中给出的讲解提到, 一个数 n ...

  9. 求100000000!末尾有多少个0

    **@求100000000!末尾有多少个0 /求100000000!末尾有多少个0 两个数相乘怎么能得到0呢? 只能是25 因为2的个数要远远的多于5 所以说只需要数5的个数即可 */ #includ ...

最新文章

  1. spark集群使用hanlp进行分布式分词操作说明
  2. 2021-03-19注解是分功能模块的@ReuqestMapping注解需要依赖的jar为jar-web ,@Autowired注解依赖的是springframework包
  3. BLE 蓝牙网关与蓝牙定位
  4. sql安装联机丛书提示发生网络错误_速达软件:安装问题解答
  5. Map集合 java
  6. 不重复数字(洛谷 P4305)
  7. MySQL最基础的操作
  8. L2TP协议笔记1---L2TP概念及协议流程分析
  9. Git : 每一行命令都算数
  10. oralce11g RAC 启动后 CRS-0184: Cannot communicate with the CRS daemon.
  11. 做java前端需要学习哪些知识,2022最新
  12. v9更新系统后为何显示服务器连接,红伞V9升级不能……报告里说好多文件无法与服务器建立连接……...
  13. csrss.exe病毒的清除方法
  14. 查看编译war包的jdk版本
  15. 计算机主机报警 声,电脑开机报警4声长鸣解决教程 | 专业网吧维护
  16. 使用EasyExcel上传下载excel
  17. mysql identify_MySQL用户授权
  18. word页眉自动出现一条直线,怎么去掉?
  19. js根据日期计算星期几
  20. 《炬丰科技-半导体工艺》SC1/SC2蚀刻后Si表面的分析

热门文章

  1. 如何用 Python 可视化《三国》人物与兵器出现频率?(视频教程)
  2. Windows 10 专业工作站 20H1 x64简单修改
  3. 【备忘录】西北工业大学 深澜校园网登录页面
  4. java excel 插入新行_复制一行,在多个工作表Excel VBA上插入多个带有粘贴信息的新行...
  5. python版局域网端口扫描
  6. JAVA远程(ssh)执行linux脚本
  7. pkuseg对文件分词时报错
  8. 【Python】SEBS模型计算蒸散发
  9. Typora markdown教程
  10. 【探花交友】day05—圈子互动