首页 > 代码库 > 172. Factorial Trailing Zeroes

172. Factorial Trailing Zeroes

1. 问题描述

Given an integer n, return the number of trailing zeroes in n!.
Note: Your solution should be in logarithmic time complexity.
Tags: Math
Similar Problems: (H) Number of Digit One

2. 解题思路

  • 分解质因子, 当且仅当 因子中出现 一对 (2,5)时, 最后结果会增加一个 trailing zero.
    1. 2的个数永远多于5个个数.
    2. 计算5的个数时, 最简单的方法是 SUM(N/5^1, N/5^2, N/5^3...)

3. 代码

class Solution {public:    int trailingZeroes(int n)     {         if(n < 1)         {            return 0;        }        int nCount = 0;        while (0 != n/5)        {            n = n/5;            nCount = nCount + n;        }        return nCount;    }};

4. 反思

参考:http://www.cnblogs.com/ganganloveu/p/4193373.html

172. Factorial Trailing Zeroes