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

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

Trailing Zeros ของผลคูณ n ตัวเลข

กำหนดอาร์เรย์ n ตัวเลข หาจำนวนศูนย์ติดต่อกันท้ายสุดของผลคูณทั้งหมด (Trailing Zeros)

หลักการ: ศูนย์ท้ายสุดมาจากคู่ตัวประกอบ 2 × 5 จำนวนศูนย์ = min(จำนวนตัวประกอบ 2, จำนวนตัวประกอบ 5) ในผลคูณ

วิธีแก้

  1. สำหรับแต่ละตัวเลข นับจำนวนตัวประกอบ 2 และ 5 (หารซ้ำจนไม่ลงตัว)
  2. รวมจำนวน 2 และ 5 ทั้งอาร์เรย์
  3. คำตอบ = min(total_twos, total_fives)

โค้ดตัวอย่าง Python


def count_factor(n, p):
    cnt = 0
    while n % p == 0:
        cnt += 1
        n //= p
    return cnt

def trailing_zeros_product(arr):
    twos = fives = 0
    for x in arr:
        twos += count_factor(x, 2)
        fives += count_factor(x, 5)
    return min(twos, fives)

print(trailing_zeros_product([200, 20, 5, 30, 40, 14]))  # 6