0172. Factorial Trailing Zeroes

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

Description

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

Note that n! = n * (n - 1) * (n - 2) * ... * 3 * 2 * 1.

Example 1:

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

Example 2:

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

Example 3:

**Input:** n = 0
**Output:** 0

Constraints:

  • 0 <= n <= 104

Follow up: Could you write a solution that works in logarithmic time complexity?

ac

class Solution {
    public int trailingZeroes(int n) {
        int res = 0;
        while (n >= 5) {
            n /= 5;
            res += n;
        }
        return res;
    }
}
/*
tailing 0s result from 2 * 5, so counting them.
2 is ample, almost n / 2. so just count 5.
n! = 5 * 10 * 15 * 25 * 30 ...
some have one '5', some have two '5'.
n / 5 : count those have one '5'
n / 5 / 5 : count those have two '5'
.
.
.
so, that is: n /= 5; res += n;

*/

Last updated