Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 n개의 숫자를 곱한 후 끝에서 연속되는 0의 수를 찾으십시오.


n개의 숫자가 있는 배열이 있다고 가정하면 n개의 숫자를 모두 곱한 후 끝에 연속 0의 개수를 반환해야 합니다.

따라서 입력이 [200, 20, 5, 30, 40, 14]와 같으면 출력은 200 * 20 * 5 * 30 * 40 * 14 =336000000으로 6이 되고 끝에 6개의 0이 있습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다.

  • count_fact_two() 함수를 정의합니다. n

    소요됩니다.
  • 개수 :=0

  • n mod 2가 0인 동안 수행

    • 개수 :=개수 + 1

    • n :=n / 2 (몫만 정수로)

  • 반환 횟수

  • count_fact_five() 함수를 정의합니다. n

    소요됩니다.
  • 개수 :=0

  • n mod 5가 0인 동안 수행

    • 개수 :=개수 + 1

    • n :=n / 5(몫만 정수로)

  • 반환 횟수

  • 기본 방법에서 다음을 수행하십시오 -

  • n :=A의 크기

  • 2:=0, 5:=0

  • 0에서 n 사이의 i에 대해 수행

    • 2개 :=2개 + count_fact_two(A[i])

    • 다섯 :=다섯 + count_fact_five(A[i])

  • 2-5이면

    • 두 개를 반환

  • 그렇지 않으면

    • 5를 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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))

입력

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

출력

6