# Number of trailing zeroes in base 16 representation of N!

• Difficulty Level : Medium
• Last Updated : 14 Nov, 2022

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 int``using` `namespace` `std;` `// Function to return the count of trailing zeroes``ll 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 code``int` `main()``{``    ``int` `n = 6;``    ``cout << getTrailingZeroes(n);``}`

## Java

 `// Java implementation of the approach``class` `GfG``{` `// Function to return the count of trailing zeroes``static` `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 code``public` `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 zeroes``def` `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 code``n ``=` `6``print``(getTrailingZeroes(n))` `# This code is contributed``# by Mohit Kumar`

## C#

 `// C# implementation of the approach``using` `System;``class` `GFG``{` `// Function to return the count of``// trailing zeroes``static` `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 code``public` `static` `void` `Main()``{``    ``int` `n = 6;``    ``Console.Write(getTrailingZeroes(n));``}``}` `// This code is contributed by``// Akanksha Rai`

## PHP

 ``

## Javascript

 ``

Output

`1`

Time Complexity: O(log n)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up