Factorial Trailing Zeroes

原题链接Factorial Trailing Zeroes

计算n!(n的阶乘)末尾有多少个0

思路:

0实际上来源于10,而10来源于2×5,所以只需要判断n×(n−1)×(n−2)×...×1n×(n−1)×(n−2)×...×1n×(n-1)×(n-2)×...×1可以拆分成多少个2×52×52×5即可。而2的个数明显多于5的个数,所以只需要判断有多少个5即可

考虑1到100这100个数可以分成多少个5

首先可以想到5,10,15,20,...,1005,10,15,20,...,1005,10,15,20,...,100这100/5=20100/5=20100/5=20个数可以分解成5×m5×m5×m的形式,所以这20个数每个数都可以分出一个5来

其次考虑25,50,75,10025,50,75,10025,50,75,100这100/5/5=4100/5/5=4100 / 5 / 5 = 4个数可以分解成5×5×m5×5×m5×5×m的形式,所以这4个数每个数又可以分出一个5来

注,由于计算5的倍数时25,50,75,100已经分解出一个5,所以计算25的倍数时仅剩下一个5可以分解

所以100!末尾0的个数就是5的个数即100/5+100/5/5=24100/5+100/5/5=24100/5 + 100/5/5 = 24个

如果给出的n足够大,那么

  • 可以分解成5×m5×m5×m形式的数可以贡献出一个5,总共有n/5n/5n/5个
  • 可以分解成5×5×m5×5×m5×5×m形式的数可以贡献出一个5,总共有n/5/5n/5/5n/5/5个
  • 可以分解成5×5×5×m5×5×5×m5×5×5×m形式的数可以贡献出一个5,总共有n/5/5/5n/5/5/5n/5/5/5个

最后计算总数量即可

代码如下

class Solution {
public:int trailingZeroes(int n) {int res = 0;for(long long int i = 5; n / i > 0; i *= 5)res += n / i;return res;}};

每天一道LeetCode-----计算n的阶乘末尾有多少个0相关推荐

  1. 计算1024的阶乘结果有多少个0

    1024! 末尾有多少个0? 1024的阶乘末尾有多少个0,这个问题只要理清思想就很好解了. 有多少个0取决于有多少个10相乘,即1024拆成小单元后有多少个10. 由于10不是素数,所以直接用10进 ...

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

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

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

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

  4. n的阶乘末尾有多少个0?

    1.先求res = n!,然后 tmp = res %10, if(tmp ==0)count++,造成问题,n!的增长很夸张,一不小心就溢出了 2.追究到底,这种题目还是找规律的题 会发现2*5=1 ...

  5. n!阶乘末尾有多少个零0

    题目: 初阶:1*2*3*--*100 求结果末尾有多少个零. 进阶: N的阶乘末尾有多少个0 分析: 一般类似的题目都会蕴含某种规律或简便方法的阶乘末尾一个零表示一个进位,则相当于乘以10而10 是 ...

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

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

  7. 【基础】n的阶乘尾部有多少个0 JAVA金典算法-判断一个数(乘积得到的数)的末尾有几个0--发掘

    [基础]n的阶乘尾部有多少个0 我们登堂入室--- 首先看下n的阶乘尾部有多少个0这道题 我们有很多思路可以去解决这道题 比如啊 我们可以先把他的阶乘结果求出来 然后我们转换为字符串 在一一判断是否为 ...

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

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 1×2× ...

  9. N的阶乘(N!)中的末尾有多少个0

    问题:N的阶乘(N!)中的末尾有多少个0? 例如:N = 5,N! = 120.末尾有1个0. 分析:想到这个问题,有人可能第一反应就是现求出N!,然后再根据求出的结果,最后得出N!的末尾有多少个0. ...

最新文章

  1. Chrome开发者工具详解(2)-Network面板
  2. PHP:echo、print、print_r() 和 var_dump()
  3. Spring 详解(三):AOP 面向切面的编程
  4. DELETE误操作_oracle
  5. tensorflow随笔-文件数据读取
  6. CF603D Ruminations on Ruminants(计算几何/Simson theorem)
  7. 一个 js 中值传递和引用传递的坑。
  8. [c#基础]使用抽象工厂实现三层
  9. 会javascript,你才是前端工程师!
  10. 完整卸载SQL Server2008
  11. Python超级码力在线编程大赛初赛题解
  12. bat计算机清理原理,如何一键清除系统垃圾bat,教您如何清理
  13. 超级实用Windows快捷键 程序员必备 Windows 快捷操作大全
  14. 2022-2028年中国锂锰电池行业市场调查及未来前景预测报告
  15. linux 内核 浮点运算,ARM64与x86_64浮点运算精度比较
  16. c#股票接口源代码算法
  17. Redis(1)入门指令
  18. 最常见的几种手机快充方式和原理
  19. S3C2440之裸机之C语言按键点亮LED灯
  20. GitHub 爆赞的 RocketMQ 分布式中间件学习手册,竟一夜下载量破 10W+

热门文章

  1. 南京信息工程大学c语言真题,南京信息工程大学C语言试题库.doc
  2. C语言学习之购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。
  3. 3-5 获取命令行参数
  4. java RSA加密解密实现(含分段加密)
  5. Entity Framework 与 LINQ to SQL
  6. UVa 590 Always on the run(简单链式DP)
  7. Day14作业 一、完成下面的要求? 先创建一个工人类,属性:姓名,年龄,工资
  8. 解决Redis服务错误一例听语音
  9. [网络安全自学篇] 九十五.利用XAMPP任意命令执行提升权限(CVE-2020-11107)及防御措施
  10. Python简单实现基于VSM的余弦相似度计算