Trailing Zeros ของผลคูณ n ตัวเลข
กำหนดอาร์เรย์ n ตัวเลข หาจำนวนศูนย์ติดต่อกันท้ายสุดของผลคูณทั้งหมด (Trailing Zeros)
หลักการ: ศูนย์ท้ายสุดมาจากคู่ตัวประกอบ 2 × 5 จำนวนศูนย์ = min(จำนวนตัวประกอบ 2, จำนวนตัวประกอบ 5) ในผลคูณ
วิธีแก้
- สำหรับแต่ละตัวเลข นับจำนวนตัวประกอบ 2 และ 5 (หารซ้ำจนไม่ลงตัว)
- รวมจำนวน 2 และ 5 ทั้งอาร์เรย์
- คำตอบ = 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