Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Số chữ số 0 liên tiếp ở cuối sau khi nhân n số trong Python


Cho mảng n số. Trả về số chữ số 0 liên tiếp ở cuối sau khi nhân tất cả các số.

Ví dụ: [200, 20, 5, 30, 40, 14] -> tích = 336000000 -> 6 chữ số 0.

Thuật toán giải quyết

  • Số chữ số 0 ở cuối = min(số ước 2, số ước 5) trong tích.
  • Hàm count_fact_two(n): đếm số lần chia hết cho 2.
  • Hàm count_fact_five(n): đếm số lần chia hết cho 5.
  • Tổng twos và fives cho tất cả phần tử.
  • Trả về min(twos, fives).

Ví dụ minh họa

def count_fact_two(n):
    count = 0
    while n % 2 == 0:
        count += 1
        n //= 2
    return count

def count_fact_five(n):
    count = 0
    while n % 5 == 0:
        count += 1
        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])
    return min(twos, fives)

A = [200, 20, 5, 30, 40, 14]
print(get_consecutive_zeros(A))  # 6

Đầu vào

[200, 20, 5, 30, 40, 14]

Đầu ra

6