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