ধরুন আমাদের n সংখ্যা সহ একটি অ্যারে আছে, আমাদের সমস্ত n সংখ্যাগুলিকে গুণ করার পরে শেষে ধারাবাহিক শূন্যের সংখ্যা ফেরত দিতে হবে৷
সুতরাং, যদি ইনপুটটি [200, 20, 5, 30, 40, 14] এর মতো হয়, তাহলে আউটপুট 6 হবে 200 * 20 * 5 * 30 * 40 * 14 =336000000, শেষে ছয়টি 0 আছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন সংজ্ঞায়িত করুন count_fact_two()। এটি n
লাগবে৷ -
গণনা :=0
-
যখন n mod 2 হল 0, do
-
গণনা :=গণনা + 1
-
n :=n / 2 (শুধুমাত্র ভাগফল পূর্ণসংখ্যা হিসাবে)
-
-
ফেরত গণনা
-
একটি ফাংশন সংজ্ঞায়িত করুন count_fact_five()। এটি n
লাগবে৷ -
গণনা :=0
-
যখন n mod 5 হল 0, do
-
গণনা :=গণনা + 1
-
n :=n / 5 (শুধুমাত্র ভাগফল পূর্ণসংখ্যা হিসাবে)
-
-
ফেরত গণনা
-
প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
-
n :=A
এর আকার -
twos :=0, Fives :=0
-
0 থেকে n রেঞ্জের জন্য, করুন
-
twos :=twos + count_fact_two(A[i])
-
Fives :=Fives + count_fact_five(A[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