Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ค้นหาจำนวนศูนย์ต่อเนื่องที่ส่วนท้ายหลังจากคูณตัวเลข n ใน Python


สมมติว่าเรามีอาร์เรย์ที่มีตัวเลข 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 ทำ

    • นับ :=นับ + 1

    • n :=n / 2 (เฉพาะผลหารเป็นจำนวนเต็ม)

  • จำนวนคืน

  • กำหนดฟังก์ชัน count_fact_five() นี่จะใช้เวลา n

  • นับ :=0

  • ในขณะที่ n mod 5 คือ 0 ทำ

    • นับ :=นับ + 1

    • n :=n / 5 (เฉพาะผลหารเป็นจำนวนเต็ม)

  • จำนวนคืน

  • จากวิธีหลัก ให้ทำดังนี้ −

  • n :=ขนาดของ A

  • สอง :=0, ห้า :=0

  • สำหรับผมอยู่ในช่วง 0 ถึง n ทำ

    • twos :=twos + count_fact_two(A[i])

    • ห้า :=ห้า + count_fact_five(A[i])

  • ถ้า 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