Get the best out of our app
GeeksforGeeks App
Open App
Browser
Continue

# Count number of trailing zeros in product of array

Given a array size of n, we need to find the total number of zeros in the product of array.

Examples:

```Input  : a[] = {100, 20, 40, 25, 4}
Output : 6
Product is 100 * 20 * 40 * 25 * 4
which is 8000000 and has 6 trailing 0s.

Input  : a[] = {10, 100, 20, 30, 25, 4,
43, 25, 50, 90, 12, 80}
Output : 13```

A simple solution is simply multiply and count trailing 0s in product. This solution may cause integer overflow. A better solution is based on the fact that zeros are formed by a combination of 2 and 5. Hence the number of zeros will depend on the number of pairs of 2’s and 5’s that can be formed.
Ex.: 8 * 3 * 5 * 23 * 17 * 25 * 4 * 11
23 * 31 * 51 * 231 * 171 * 52 * 22 * 111

In this example there are 5 twos and 3 fives. Hence, we shall be able to form only 3 pairs of (2*5). Hence will be 3 Zeros in the product.

Implementation:

## C++

 `// CPP program for count total zero in product of array``#include ``using` `namespace` `std;` `// Returns count of zeros in product of array``int` `countZeros(``int` `a[], ``int` `n)``{``    ``int` `count2 = 0, count5 = 0;``    ``for` `(``int` `i = 0; i < n; i++) {` `        ``// count number of 2s in each element``        ``while` `(a[i] % 2 == 0) {``            ``a[i] = a[i] / 2;``            ``count2++;``        ``}` `        ``// count number of 5s in each element``        ``while` `(a[i] % 5 == 0) {``            ``a[i] = a[i] / 5;``            ``count5++;``        ``}``    ``}``    ``// return the minimum``    ``return` `(count2 < count5) ? count2 : count5;``}` `// Driven Program``int` `main()``{``    ``int` `a[] = { 10, 100, 20, 30, 50, 90, 12, 80 };``    ``int` `n = ``sizeof``(a) / ``sizeof``(a[0]);``    ``cout << countZeros(a, n);``    ``return` `0;``}`

## Java

 `// Java program for count total``// zero in product of array``import` `java.util.*;``import` `java.lang.*;` `public` `class` `GfG``{``    ``// Returns count of zeros in product of array``    ``public` `static` `int` `countZeros(``int``[] a, ``int` `n)``    ``{``        ``int` `count2 = ``0``, count5 = ``0``;``        ``for` `(``int` `i = ``0``; i < n; i++)``        ``{` `            ``// count number of 2s``            ``// in each element``            ``while` `(a[i] % ``2` `== ``0``)``            ``{``                ``a[i] = a[i] / ``2``;``                ``count2++;``            ``}` `            ``// count number of 5s``            ``// in each element``            ``while` `(a[i] % ``5` `== ``0``)``            ``{``                ``a[i] = a[i] / ``5``;``                ``count5++;``            ``}``        ``}``        ``// return the minimum``        ``return` `(count2 < count5) ? count2 : count5;``    ``}``    ` `    ``// Driver function``    ``public` `static` `void` `main(String argc[])``    ``{``        ``int``[] a = ``new` `int``[]{ ``10``, ``100``, ``20``, ``30``,``                            ``50``, ``91``, ``12``, ``80` `};``        ``int` `n = ``8``;``        ``System.out.println(countZeroso(a, n));``    ``}``    ` `}` `// This code is contributed``// by Sagar Shukla`

## Python3

 `# Python 3 program for count``# total zero in product of array` `# Returns count of zeros``# in product of array``def` `countZeros(a, n) :``    ``count2 ``=` `0``    ``count5 ``=` `0``    ``for` `i ``in` `range``(``0``, n) :``        ` `        ``# count number of 2s``        ``# in each element``        ``while` `(a[i] ``%` `2` `=``=` `0``) :``            ``a[i] ``=` `a[i] ``/``/` `2``            ``count2 ``=` `count2 ``+` `1``        ` `        ` `        ``# count number of 5s``        ``# in each element``        ``while` `(a[i] ``%` `5` `=``=` `0``) :``            ``a[i] ``=` `a[i] ``/``/` `5``            ``count5 ``=` `count5 ``+` `1``        ` `        ` `    ``# return the minimum``    ``if``(count2 < count5) :``        ``return` `count2``    ``else` `:``        ``return` `count5``        `  `# Driven Program``a ``=` `[ ``10``, ``100``, ``20``, ``30``, ``50``, ``90``, ``12``, ``80` `]``n ``=` `len``(a)``print``(countZeros(a, n))` `# This code is contributed``# by Nikita Tiwari.`

## C#

 `// C# program for count total``// zero in product of array``using` `System;` `public` `class` `GfG``{``    ``// Returns count of zeros in product of array``    ``public` `static` `int` `countZeros(``int``[] a, ``int` `n)``    ``{``        ``int` `count2 = 0, count5 = 0;``        ``for` `(``int` `i = 0; i < n; i++)``        ``{` `            ``// count number of 2s``            ``// in each element``            ``while` `(a[i] % 2 == 0)``            ``{``                ``a[i] = a[i] / 2;``                ``count2++;``            ``}` `            ``// count number of 5s``            ``// in each element``            ``while` `(a[i] % 5 == 0)``            ``{``                ``a[i] = a[i] / 5;``                ``count5++;``            ``}``        ``}``        ``// return the minimum``        ``return` `(count2 < count5) ? count2 : count5;``    ``}``    ` `    ``// Driver function``    ``public` `static` `void` `Main()``    ``{``        ``int``[] a = ``new` `int``[]{ 10, 100, 20, 30,``                            ``50, 91, 12, 80 };``        ``int` `n = 8;``        ``Console.WriteLine(countZeroso(a, n));``    ``}``    ` `}` `// This code is contributed``// by vt_m`

## PHP

 ``

## Javascript

 ``

Output

`9`

Time Complexity: O(n * (log2m + log5m)), where n is the size of the given array.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

My Personal Notes arrow_drop_up