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