Number of trailing zeroes in base 16 representation of N!

• Difficulty Level : Medium
• Last Updated : 26 Feb, 2021

Given an integer N, the task is to find the number of trailing zeroes in the base 16 representation of the factorial of N.
Examples:

Input: N = 6
Output:
6! = 720 (base 10) = 2D0 (base 16)
Input: N = 100
Output: 24

Approach:

• Number of trailing zeroes would be the highest power of 16 in the factorial of N in base 10.
• We know that 16 = 24. So, the highest power of 16 is equal to the highest power 2 in the factorial of N divided by 4.
• To calculate the highest power of 2 in N!, we can use Legendre’s Formula.

Below is the implementation of the above approach:

C++

 // C++ implementation of the approach#include #define ll long long intusing namespace std; // Function to return the count of trailing zeroesll getTrailingZeroes(ll n){    ll count = 0;    ll val, powerTwo = 2;     // Implementation of the Legendre's formula    do {        val = n / powerTwo;        count += val;        powerTwo *= 2;    } while (val != 0);     // Count has the highest power of 2    // that divides n! in base 10    return (count / 4);} // Driver codeint main(){    int n = 6;    cout << getTrailingZeroes(n);}

Java

 // Java implementation of the approachclass GfG{ // Function to return the count of trailing zeroesstatic long getTrailingZeroes(long n){    long count = 0;    long val, powerTwo = 2;     // Implementation of the Legendre's formula    do    {        val = n / powerTwo;        count += val;        powerTwo *= 2;    } while (val != 0);     // Count has the highest power of 2    // that divides n! in base 10    return (count / 4);} // Driver codepublic static void main(String[] args){    int n = 6;    System.out.println(getTrailingZeroes(n));}} // This code is contributed by// Prerna Saini.

Python3

 # Python3 implementation of the approach # Function to return the count of# trailing zeroesdef getTrailingZeroes(n):     count = 0    val, powerTwo = 1, 2     # Implementation of the Legendre's    # formula    while (val != 0):        val = n //powerTwo        count += val        powerTwo *= 2     # Count has the highest power of 2    # that divides n! in base 10    return (count // 4) # Driver coden = 6print(getTrailingZeroes(n)) # This code is contributed# by Mohit Kumar

C#

 // C# implementation of the approachusing System;class GFG{ // Function to return the count of// trailing zeroesstatic long getTrailingZeroes(long n){    long count = 0;    long val, powerTwo = 2;     // Implementation of the    // Legendre's formula    do    {        val = n / powerTwo;        count += val;        powerTwo *= 2;    } while (val != 0);     // Count has the highest power of 2    // that divides n! in base 10    return (count / 4);} // Driver codepublic static void Main(){    int n = 6;    Console.Write(getTrailingZeroes(n));}} // This code is contributed by// Akanksha Rai



Javascript


Output:
1

My Personal Notes arrow_drop_up