LeetCode刷题日记(Day17)

Problem 172. Factorial Trailing Zeroes

  • 题目描述
    Given an integer n, return the number of trailing zeroes in n!.

    Example:

    Input: 5
    Output: 1
    Explanation: 5! = 120, one trailing zero.
    
  • 解题思路
    本题要求的是 n 的阶乘末尾有多少个0,例如 5!= 1 * 2 * 3 * 4 * 5 = 120,它的末尾有 1 个0。

    对于任意的 n!,根据质因素分解,n!可以分解成若干质数幂的乘积,即 n! = (2^x) * (3^y) * (5^z)…

    而 n!末尾的 0 都是由 2*5 得到的,所以 n!的质因素分解中出现了多少个 2 * 5,结果就有多少个0。

    假设 n!可以分解成 x 个 2 和 y 个 5 相乘,则 y 一定小于 x,即 n!中最多有 y 个2*5。所以本题也就成了求解 y 的个数。

  • 代码实现

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

发布了29 篇原创文章 · 获赞 4 · 访问量 3538
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览