题目:

给定一个整数 n ,返回 n! 结果中尾随零的数量。

提示 n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1

示例 1:

输入:n = 3
输出:0
解释:3! = 6 ,不含尾随 0
示例 2:

输入:n = 5
输出:1
解释:5! = 120 ,有一个尾随 0
示例 3:

输入:n = 0
输出:0

提示:

0 <= n <= 104

进阶:你可以设计并实现对数时间复杂度的算法来解决此问题吗?

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/factorial-trailing-zeroes
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

找尾随0的个数,需要考虑什么情况下会产生0,0到9中只有偶数与5相乘会产生数字0,根源是由2和5相乘得到10从而产生0,就需要思考 n!能分解出多少个 2 和 5,取个数最小的,不难看出,5的个数相对较少。故计算出含有5的因数的个数即可。

举例:

12! = 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 = (2*2*3) * 11 * (2*5) * 9 * (2*2*2) * 7 * (2*3) * (1*5) * (2*2) * 3 *(1*2) * 1

含有2的因子:(2*2*3)、 (2*2*2) 、(2*3) 、(2*2) 、(1*2)

含有5的因子: (2*5)、(1*5)

故只需要看累乘的数中有多少个5,这里5的个数为2,结果也会返回2。

26! =26 * 25 * 24 * 23 * 22 * 21 * 20 * 19 * 18 * 17 * 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

=(2*13) * (5*5) *(2*2*2*3) * 23 * (2*11) * 21 *(2*2*5) * 19 * (2*9) * 17 * (2*2*2*2 ) * (3*5) * (2*7) * 13 *(2*2*3) * 11 * (2*5) * 9 * (2*2*2) * 7 * (2*3) * (1*5) * (2*2) * 3 *(1*2) * 1

含有2的因子:(2*13)、(2*2*2*3)、(2*11) 、(2*9)、(2*2*2*2)、 (2*7)、(2*2*3)、(2*2*2) 、 (2*3) 、(2*2) 、(1*2)

含有5的因子: (5*5)、(2*2*5)、 (3*5) 、(2*5)、(1*5)

故只需要看累乘的数中有多少个5,这里5的个数为6,结果也会返回6。

代码:

力扣172(java)-阶乘后的零(中等)的更多相关文章

  1. LeetCode 172:阶乘后的零

    给定一个整数 n, 返回 n! 结果中尾数为零的数量. 示例 : 输入: 输出: 解释: ! = , 尾数中没有零. 示例 : 输入: 输出: 解释: ! = , 尾数中有个零. 说明:算法的时间复杂 ...

  2. 172. 阶乘后的零 Java解法

    https://leetcode-cn.com/problems/factorial-trailing-zeroes/ 172. 阶乘后的零 这题要完成其实要知道一个很巧妙的思想,就是阶乘里面,后面的 ...

  3. Java实现 LeetCode 172 阶乘后的零

    172. 阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! ...

  4. LeetCode 172. 阶乘后的零(Factorial Trailing Zeroes)

    172. 阶乘后的零 172. Factorial Trailing Zeroes 题目描述 给定一个整数 n,返回 n! 结果尾数中零的数量. LeetCode172. Factorial Trai ...

  5. Leetcode 172.阶乘后的零

    阶乘后的零 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例 1: 输入: 3 输出: 0 解释: 3! = 6, 尾数中没有零. 示例 2: 输入: 5 输出: 1 解释: 5! = 120 ...

  6. 每日一道 LeetCode (41):阶乘后的零

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...

  7. 172 Factorial Trailing Zeroes 阶乘后的零

    给定一个整数 n,返回 n! 结果尾数中零的数量.注意: 你的解决方案应为对数时间复杂度. 详见:https://leetcode.com/problems/factorial-trailing-ze ...

  8. leetcode刷题笔记172 阶乘后的零

    题目描述: 给定一个整数 n,返回 n! 结果尾数中零的数量. 示例1: 输入: 输出: 解释: ! = , 尾数中没有零. 示例2: 输入: 输出: 解释: ! = , 尾数中有 个零. 说明: 你 ...

  9. 【每天一题】LeetCode 172. 阶乘后的零

    开源地址:点击该链接 题目描述 https://leetcode-cn.com/problems/factorial-trailing-zeroes 给定一个整数 n,返回 n! 结果尾数中零的数量. ...

  10. [Swift]LeetCode172. 阶乘后的零 | Factorial Trailing Zeroes

    Given an integer n, return the number of trailing zeroes in n!. Example 1: Input: 3 Output: 0 Explan ...

随机推荐

  1. Ingress和Ingress Controller什么关系

    Ingress Controller和Ingress在Kubernetes(K8s)中各自扮演着不同的角色,但它们共同协作以实现外部访问集群内部服务的功能. Ingress是一个Kubernetes ...

  2. 日常办公——Word中重复标题的设置

    在Word中,遇到表格分页时,可以设置重复标题,如下图所示:

  3. 【刷题】LeetCode 239 滑动窗口最大值- Python手撕最大堆

    手撕版 最大堆的完全实现, 堆中元素为二元组(num, idx),比较时用数值,赋值或交换时用整个元组. class Heap: def __init__(self, arr, capacity): ...

  4. 23_FFmpeg像素格式转换

    简介 前面使用 SDL 显示了一张YUV图片以及YUV视频.接下来使用Qt中的QImage来实现一个简单的 YUV 播放器,查看QImage支持的像素格式,你会发现QImage仅支持显示RGB像素格式 ...

  5. C++ 调用 Python 总结(一)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  6. Shell 编写摘要 (一)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  7. 元宇宙是VR虚拟现实的未来吗?

    从科幻小说到商业现实 自从 Facebook年更名为 Meta 以来,关于元宇宙的热议不断,人们对虚拟世界的兴趣也重新燃起,因为尽管虚拟现实 (VR) 的概念由来已久,但该技术现在才开始真正得以应用. ...

  8. 三维模型OBJ格式轻量化顶点压缩主要技术方法分析

    三维模型OBJ格式轻量化顶点压缩主要技术方法分析 三维模型的OBJ格式轻量化中,顶点压缩是一项重要的技术方法,用于减小模型文件的大小.以下是关于三维模型OBJ格式轻量化顶点压缩的主要技术方法的分析: ...

  9. Loto实践干货(9) 示波器测 晶振

    我们用LOTO示波器的多个型号,带宽从20M到100M,分别测无源和有源晶振的情况.分别测试了12M,15M,24M,48M,80M晶振的波形.并分析了为什么我们经常测出晶振波形不是方波?为什么有时候 ...

  10. node-xlsx处理excel

    引用node-xlsx npm install node-xlsx -save 文件中引用 const xlsx = require('node-xlsx') 读取excel const sheet ...