Find the number of consecutive zero at the end after multiplying n numbers

Given an array with n numbers. The task is to print number of consecutive zero’s at the end after multiplying all the n number.

Examples :

Input : arr[] = {100, 10}
Output : 3
Explanation : 100 x 10 = 1000,
3 zero's at the end.

Input : arr[] = {100, 10, 5, 25, 35, 14}
Output : 4
Explanation :
100 x 10 x 5 x 25 x 35 x 14 = 61250000,
4 zero's at the end

Naive Approach :
First multiple all the number and save into the string(because if the multiplicative number is big as 2^64 then it give wrong, so store every multiple in string) and then count the number of zero’s.

Efficient approach :
First count the 2’s factor of n numbers and then count the 5’s factor of all n number then print the smallest one.

For Example –

n_number's  | 2's factor | 5's factor 
100         |     2      |    2
10          |     1      |    1
5           |     0      |    1
25          |     0      |    2
35          |     0      |    1 
14          |     1      |    0
Total       |     4      |    7

we can take a minimum so there number of 
zero's is 4 

Below is the implementation of above approach :

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP program to find the number of consecutive zero
// at the end after multiplying n numbers
#include<iostream>
using namespace std;
  
// Function to count two's factor
int two_factor(int n) 
{    
    // Count number of 2s present in n
    int twocount = 0;
    while (n % 2 == 0) 
    {
        twocount++; 
        n = n / 2; 
    }
    return twocount;
}
  
// Function to count five's factor
int five_factor(int n) 
{
    int fivecount = 0;
    while (n % 5 == 0) 
    {
        fivecount++; 
        n = n / 5; 
    }
    return fivecount;
}
  
// Function to count number of zeros
int find_con_zero(int arr[], int n)
{
    int twocount = 0;
    int fivecount = 0;
    for (int i = 0; i < n; i++) {
  
        // Count the two's factor of n number
        twocount += two_factor(arr[i]);
  
        // Count the five's factor of n number
        fivecount += five_factor(arr[i]);
    }
  
    // Return the minimum
    if (twocount < fivecount) 
        return twocount; 
    else 
        return fivecount;
}
  
// Driver Code
int main()
{
    int arr[] = { 100, 10, 5, 25, 35, 14 };
    int n = 6;
    cout << find_con_zero(arr, n);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find the number 
// of consecutive zero at the end
// after multiplying n numbers
  
public class GfG{
  
    // Function to count two's factor
    static int two_factor(int n) 
    {     
        // Count number of 2s
        // present in n
        int twocount = 0;
        while (n % 2 == 0
        {
            twocount++; 
            n = n / 2
        }
        return twocount;
    }
  
    // Function to count five's
    // factor
    static int five_factor(int n) 
    {
        int fivecount = 0;
        while (n % 5 == 0
        {
            fivecount++; 
            n = n / 5
        }
        return fivecount;
    }
  
    // Function to count number of zeros
    static int find_con_zero(int arr[], int n)
    {
        int twocount = 0;
        int fivecount = 0;  
          
        for (int i = 0; i < n; i++) {   
  
            // Count the two's factor
            // of n number
            twocount += two_factor(arr[i]); 
  
            // Count the five's factor 
            // of n number
            fivecount += five_factor(arr[i]);
        }
  
        // Return the minimum
        if (twocount < fivecount) 
            return twocount; 
        else
            return fivecount;
    }
      
    // driver function
    public static void main(String s[])
    {
        int arr[] = { 100, 10, 5, 25, 35, 14 };
        int n = 6;
        System.out.println(find_con_zero(arr, n));     
    }
}
  
// This code is contributed by Gitanjali

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 code to find the number of consecutive zero
# at the end after multiplying n numbers
  
# Function to count two's factor
def two_factor( n ):
  
    # Count number of 2s present in n
    twocount = 0
    while n % 2 == 0:
        twocount+=1
        n =int( n / 2)
    return twocount
      
# Function to count five's factor
def five_factor( n ):
    fivecount = 0
    while n % 5 == 0:
        fivecount+=1
        n = int(n / 5)
    return fivecount
  
# Function to count number of zeros
def find_con_zero( arr, n ):
    twocount = 0
    fivecount = 0
    for i in range(n):
  
        # Count the two's factor of n number
        twocount += two_factor(arr[i])
          
        # Count the five's factor of n number
        fivecount += five_factor(arr[i])
      
    # Return the minimum
    if twocount < fivecount:
        return twocount
    else:
        return fivecount
  
# Driver Code
arr = [ 100, 10, 5, 25, 35, 14 ]
n = 6
print(find_con_zero(arr, n))
  
# This code is contributed by "Sharad_Bhardwaj".

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find the number 
// of consecutive zero at the end
// after multiplying n numbers
using System;
  
public class GfG {
  
    // Function to count two's factor
    static int two_factor(int n) 
    
          
        // Count number of 2s
        // present in n
        int twocount = 0;
          
        while (n % 2 == 0) 
        {
            twocount++; 
            n = n / 2; 
        }
          
        return twocount;
    }
  
    // Function to count five's
    // factor
    static int five_factor(int n) 
    {
        int fivecount = 0;
          
        while (n % 5 == 0) 
        {
            fivecount++; 
            n = n / 5; 
        }
          
        return fivecount;
    }
  
    // Function to count number of zeros
    static int find_con_zero(int []arr, int n)
    {
        int twocount = 0;
        int fivecount = 0; 
          
        for (int i = 0; i < n; i++) { 
  
            // Count the two's factor
            // of n number
            twocount += two_factor(arr[i]); 
  
            // Count the five's factor 
            // of n number
            fivecount += five_factor(arr[i]);
        }
  
        // Return the minimum
        if (twocount < fivecount) 
            return twocount; 
        else
            return fivecount;
    }
      
    // driver function
    public static void Main()
    {
          
        int []arr = { 100, 10, 5, 25, 35, 14 };
        int n = 6;
          
        Console.WriteLine(find_con_zero(arr, n)); 
    }
}
  
// This code is contributed by vt_m.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to find the number 
// of consecutive zero at the end 
// after multiplying n numbers
  
// Function to count two's factor
function two_factor($n
    // Count number of 
    // 2s present in n
    $twocount = 0;
    while ($n % 2 == 0) 
    {
        $twocount++; 
        $n = (int)($n / 2); 
    }
    return $twocount;
}
  
// Function to count 
// five's factor
function five_factor($n
{
    $fivecount = 0;
    while ($n % 5 == 0) 
    {
        $fivecount++; 
        $n = (int)($n / 5); 
    }
    return $fivecount;
}
  
// Function to count
// number of zeros
function find_con_zero($arr, $n)
{
    $twocount = 0;
    $fivecount = 0;
    for ($i = 0; $i < $n; $i++) 
    {
  
        // Count the two's 
        // factor of n number
        $twocount += two_factor($arr[$i]);
  
        // Count the five's 
        // factor of n number
        $fivecount += five_factor($arr[$i]);
    }
  
    // Return the minimum
    if ($twocount < $fivecount
        return $twocount
    else
        return $fivecount;
}
  
// Driver Code
$arr= array(100, 10, 5,
            25, 35, 14);
$n = 6;
echo find_con_zero($arr, $n);
  
// This code is contributed by mits
?>

chevron_right


Output :

4


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.



Improved By : Mithun Kumar