4.3 Iloczyn liczb z pierwszego wiersza

Matura maj 2024 - Matura z informatyki: arkusze krok po kroku (Python)

Zadanie 4.3 (3 pkt): które liczby z drugiego wiersza są iloczynem liczb z pierwszego, przy czym czynnik może się powtórzyć najwyżej tyle razy, ile razy występuje w pierwszym wierszu. Słownik `count` liczy wystąpienia, a funkcja dzieli liczbę przez każdą dostępną liczbę pierwszą. Jeśli na końcu zostaje 1, rozkład się udał. Dla pliku przykładowego: 10 12 14 15 18 20 21 25 27 28 (16 = 2 · 2 · 2 · 2 odpada, bo 2 występuje tylko dwa razy).

with open("liczby_przyklad.txt") as f:
    first = [int(x) for x in f.readline().split()]  # pierwszy wiersz: liczby pierwsze
    second = [int(x) for x in f.readline().split()]  # drugi wiersz: 20 liczb

# 4.3 ile razy każda liczba pierwsza występuje w pierwszym wierszu
count = {}
for p in first:
    count[p] = count.get(p, 0) + 1


def product_of_first(x):
    # dzielimy przez każdą dostępną liczbę pierwszą, ale nie częściej, niż ona występuje
    for p, available in count.items():
        used = 0
        while x % p == 0:
            x = x // p
            used = used + 1
        if used > available:
            return False
    return x == 1  # zostało 1: cały iloczyn złożony z liczb z pierwszego wiersza


products = [x for x in second if product_of_first(x)]

print("4.3", *products)

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Matura z informatyki: arkusze krok po kroku·Zaloguj się, aby zapisać postęp na koncie.