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

PythonServer Side ProgrammingProgramming

Suppose we have an array with n numbers, we have to return the number of consecutive zero’s at the end after multiplying all the n numbers.

So, if the input is like [200, 20, 5, 30, 40, 14], then the output will be 6 as 200 * 20 * 5 * 30 * 40 * 14 = 336000000, there are six 0s at the end.

To solve this, we will follow these steps −

  • Define a function count_fact_two() . This will take n

  • count := 0

  • while n mod 2 is 0, do

    • count := count + 1

    • n := n / 2 (only the quotient as integer)

  • return count

  • Define a function count_fact_five() . This will take n

  • count := 0

  • while n mod 5 is 0, do

    • count := count + 1

    • n := n / 5 (only the quotient as integer)

  • return count

  • From the main method, do the following −

  • n := size of A

  • twos := 0, fives := 0

  • for i in range 0 to n, do

    • twos := twos + count_fact_two(A[i])

    • fives := fives + count_fact_five(A[i])

  • if twos − fives, then

    • return twos

  • otherwise,

    • return fives

Example

Let us see the following implementation to get better understanding −

 Live Demo

def count_fact_two( n ):
   count = 0
   while n % 2 == 0:
      count+=1
      n = n // 2
   return count
def count_fact_five( n ):
   count = 0
   while n % 5 == 0:
      count += 1
      n = n // 5
   return count
def get_consecutive_zeros(A):
   n = len(A)
   twos = 0
   fives = 0
   for i in range(n):
      twos += count_fact_two(A[i])
      fives += count_fact_five(A[i])
   if twos < fives:
      return twos
   else:
      return fives
A = [200, 20, 5, 30, 40, 14]
print(get_consecutive_zeros(A))

Input

[200, 20, 5, 30, 40, 14]

Output

6
raja
Updated on 27-Aug-2020 06:10:40

Advertisements