![]() |
VOOZH | about |
Given an integer n, find the smallest positive integer x such that the factorial of x (i.e., x ! ) contains at least n trailing zeroes.
Examples :
Input: n = 6
Output: 25
Explanation: 25! = 15511210043330985984000000, It ends with 6 trailing zeroes, which is the minimum required.Input: n = 1
Output: 5
Explanation: 5! = 120, It ends with 1 trailing zero, which meets the requirement.
Table of Content
In this approach, we use a while loop to iterate over each number starting from 1. For each number, we count the number of trailing zeroes in its factorial by continuously dividing it by 5 and adding the result to the answer until the number becomes less than 5. Once the count of trailing zeroes becomes greater than or equal to n, we return the current number as the answer.
25
The idea is to use binary search to find the smallest number x such that x! has at least n trailing zeroes. We use Legendre’s formula to count how many times 5 divides numbers from 1 to x, since each 5 contributes to a trailing zero. The count of trailing zeroes increases monotonically, so binary search on the answer space is valid. The first x for which the trailing zero count is ≥ n is the required minimum.
Trailing 0s in x! = Count of 5s in prime factors of x! = floor(x/5) + floor(x/25) + floor(x/125) + ....
In the article for Count trailing zeroes in factorial of a number, we have discussed number of zeroes is equal to number of 5's in prime factors of x!. We have discussed below formula to count number of 5's.
25
Time Complexity: O(log² n), because we perform binary search in a range of size up to 5 × n, which takes O(log n) steps. In each step, we compute the number of trailing zeroes using Legendre’s formula, which takes another O(log n) time due to repeated division by 5.
Auxiliary Space: O(1), The algorithm uses a constant amount of extra space—just a few integer variables for binary search and counting. No recursion, arrays, or additional data structures are used.