मान लीजिए हमारे पास n संख्याओं का एक ऐरे है। हमें सभी n संख्याओं को गुणा करने के बाद अंत में लगातार शून्य की संख्या लौटानी है।
इसलिए, यदि इनपुट [200, 20, 5, 30, 40, 14] है, तो आउटपुट 6 होगा क्योंकि 200 * 20 * 5 * 30 * 40 * 14 = 336000000, अंत में छह 0 हैं।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
count_fact_two(n)फ़ंक्शन परिभाषित करें:count := 0- जब तक
n % 2 == 0:count := count + 1n := n // 2
countलौटाएं।
count_fact_five(n)फ़ंक्शन परिभाषित करें:count := 0- जब तक
n % 5 == 0:count := count + 1n := n // 5
countलौटाएं।
- मुख्य विधि से:
n := len(A)twos := 0,fives := 0iको 0 सेn-1तक:twos += count_fact_two(A[i])fives += count_fact_five(A[i])
- यदि
twos < fives, तोtwosलौटाएं। - अन्यथा,
fivesलौटाएं।
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
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