C++实现LeetCode(172.求阶乘末尾零的个数)

 更新时间:2021年08月02日 16:31:35   作者:Grandyang  
这篇文章主要介绍了C++实现LeetCode(172.求阶乘末尾零的个数),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下

[LeetCode] 172. Factorial Trailing Zeroes 求阶乘末尾零的个数

Given an integer n, return the number of trailing zeroes in n!.

Example 1:

Input: 3
Output: 0
Explanation: 3! = 6, no trailing zero.

Example 2:

Input: 5
Output: 1
Explanation: 5! = 120, one trailing zero.

Note: Your solution should be in logarithmic time complexity.

Credits:
Special thanks to @ts for adding this problem and creating all test cases.

这道题并没有什么难度,是让求一个数的阶乘末尾0的个数,也就是要找乘数中 10 的个数,而 10 可分解为2和5,而2的数量又远大于5的数量(比如1到 10 中有2个5,5个2),那么此题即便为找出5的个数。仍需注意的一点就是,像 25,125,这样的不只含有一个5的数字需要考虑进去,参加代码如下:

C++ 解法一:

class Solution {
public:
    int trailingZeroes(int n) {
        int res = 0;
        while (n) {
            res += n / 5;
            n /= 5;
        }
        return res;
    }
};

Java 解法一:

public class Solution {
    public int trailingZeroes(int n) {
        int res = 0;
        while (n > 0) {
            res += n / 5;
            n /= 5;
        }
        return res;
    }
}

这题还有递归的解法,思路和上面完全一样,写法更简洁了,一行搞定碉堡了。

C++ 解法二:

class Solution {
public:
    int trailingZeroes(int n) {
        return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);
    }
};

Java 解法二:

public class Solution {
    public int trailingZeroes(int n) {
        return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5);
    }
}

Github 同步地址:

https://github.com/grandyang/leetcode/issues/172

类似题目:

Number of Digit One

Preimage Size of Factorial Zeroes Function    

参考资料:

https://leetcode.com/problems/factorial-trailing-zeroes/

https://leetcode.com/problems/factorial-trailing-zeroes/discuss/52371/My-one-line-solutions-in-3-languages

https://leetcode.com/problems/factorial-trailing-zeroes/discuss/52373/Simple-CC%2B%2B-Solution-(with-detailed-explaination)

到此这篇关于C++实现LeetCode(172.求阶乘末尾零的个数)的文章就介绍到这了,更多相关C++实现求阶乘末尾零的个数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vscode+leetcode环境配置方法

    vscode+leetcode环境配置方法

    这篇文章主要介绍了vscode+leetcode环境配置,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • OpenCV3实现车牌识别(C++版)

    OpenCV3实现车牌识别(C++版)

    这篇文章主要为大家详细介绍了OpenCV3实现车牌识别功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 详解C++-二阶构造模式、友元

    详解C++-二阶构造模式、友元

    这篇文章主要介绍了C++-二阶构造模式、友元,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 可能是全网最详细的Qt连接MySQL数据库教程

    可能是全网最详细的Qt连接MySQL数据库教程

    QT众所周知是一个开源的,以C++为底层的可视化工具库,下面这篇文章主要给大家介绍了关于最详细的Qt连接MySQL数据库教程的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • C++中友元的详解及其作用介绍

    C++中友元的详解及其作用介绍

    这篇文章主要介绍了C++中友元的详解及其作用介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • c++ 如何在libuv中实现tcp服务器

    c++ 如何在libuv中实现tcp服务器

    这篇文章主要介绍了c++ 如何在libuv中实现tcp服务器,帮助大家更好的理解和使用libuv,感兴趣的朋友可以了解下
    2021-02-02
  • C语言中获取和改变目录的相关函数总结

    C语言中获取和改变目录的相关函数总结

    这篇文章主要介绍了C语言中获取和改变目录的相关函数总结,包括getcwd()函数和chdir()函数以及chroot()函数的使用方法,需要的朋友可以参考下
    2015-09-09
  • C语言实现个人通讯录管理系统

    C语言实现个人通讯录管理系统

    这篇文章主要为大家详细介绍了C语言实现个人通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • VC++简单实现关机、重启计算机实例代码

    VC++简单实现关机、重启计算机实例代码

    这篇文章主要介绍了VC++简单实现关机、重启计算机实例代码,很实用的功能,需要的朋友可以参考下
    2014-07-07
  • Qt无边框窗口拖拽和阴影的实现

    Qt无边框窗口拖拽和阴影的实现

    自定义窗口控件的无边框,窗口事件由于没有系统自带边框,无法实现拖拽拉伸等事件的处理,本文主要介绍了Qt无边框窗口拖拽和阴影的实现,感兴趣的可以了解一下
    2024-01-01

最新评论