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.