3.4 Cyfry szesnastkowe w pliku przykładowym

Matura próbna grudzień 2022 - Matura z informatyki: arkusze krok po kroku (Python)

Zadanie 3.4 (3 pkt): ile razy każda cyfra szesnastkowa występuje łącznie w zapisach szesnastkowych wszystkich liczb. `format(x, "X")` daje zapis szesnastkowy wielkimi literami (sam algorytm zamiany: reszty z dzielenia przez 16, jak przy systemie dwójkowym). Słownik liczników zaczyna od zera dla wszystkich 16 cyfr, więc w wyniku są też cyfry, których nie ma. Dla pliku przykładowego: 4:94, 0:2, 1:3, ... (odpowiedź w arkuszu).

def sieve(n):
    is_prime = [True] * (n + 1)  # indeks = liczba
    is_prime[0] = is_prime[1] = False
    i = 2
    while i * i <= n:  # wystarczy do pierwiastka: mniejsze wielokrotności skreśliły mniejsze i
        if is_prime[i]:
            j = i * i  # mniejsze wielokrotności i są już skreślone
            while j <= n:
                is_prime[j] = False
                j = j + i
        i = i + 1
    return is_prime


with open("liczby_przyklad.txt") as f:
    numbers = [int(line) for line in f]  # liczby parzyste z [4, 1 000 000]
is_prime = sieve(max(numbers))

# 3.4 format(x, "X") to zapis szesnastkowy wielkimi literami
digits = {d: 0 for d in "0123456789ABCDEF"}
for x in numbers:
    for d in format(x, "X"):
        digits[d] += 1

print("3.4")
for d, n in digits.items():
    print(f"{d}:{n}")

Ł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.