4.4 Fragment z największą średnią

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

Zadanie 4.4 (3 pkt): spójny fragment pierwszego wiersza, co najmniej 50 elementów, z największą średnią (przy remisie pierwszy w pliku). Suma fragmentu z **sum prefiksowych** to jedno odejmowanie zamiast dodawania kilkudziesięciu liczb. Wystarczy sprawdzić długości od 50 do 99: dłuższy fragment dzieli się na dwa po co najmniej 50 elementów i jeden z nich ma średnią co najmniej taką samą. Dla pliku przykładowego: 5,52 50 5.

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.4 sumy prefiksowe: suma fragmentu first[i:i + length] = prefix[i + length] - prefix[i]
prefix = [0]
for x in first:
    prefix.append(prefix[-1] + x)
best = (0, 0, 0)  # (średnia, liczba elementów, pierwszy element)
for i in range(len(first)):
    # fragment dłuższy niż 99 dzieli się na dwa po co najmniej 50 elementów i jeden z nich ma
    # średnią nie mniejszą, więc wystarczą długości od 50 do 99
    for length in range(50, 100):
        if i + length > len(first):
            break
        average = (prefix[i + length] - prefix[i]) / length
        if average > best[0]:  # ">" zostawia pierwszy w pliku z równych
            best = (average, length, first[i])

print("4.4", *best)

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