ЕГЭ · ЗАДАНИЕ 9
Электронные таблицы · №31116
В прилагаемом файле каждая строка содержит 5 чисел. Все пять чисел различны. Удвоенная сумма наибольшего и наименьшего больше суммы трёх остальных. Найдите сумму чисел первой подходящей строки. Нумерация начинается с 1; строки заголовка нет.
Файлы к заданию
Исходная таблица TXT для программыИсточник задания
Сначала попробуй решить самостоятельно, затем открой разбор. Для автоматической проверки ответа включи JavaScript.
Показать решение по шагам
Разбор решения
Ответ: 1980
В файле 28000 строк по 5 чисел. Проверяем каждую исходную строку отдельно. Профиль частот различных значений: [1, 1, 1, 1, 1]. Условие после сортировки копии строки: 2*(s[0]+s[-1]) > sum(s[1:-1]). Здесь s — отсортированная копия, c — частоты, rep содержит каждое повторяющееся вхождение, single — неповторяющиеся. Подходящих строк: 4874. Первая: №11, сумма 1980; последняя: №27992, сумма 1469. Требуется сумму чисел первой подходящей строки, поэтому ответ 1980. В таблице создайте отдельные столбцы для частот и каждого условия, объедините их функцией И, затем отфильтруйте ИСТИНА. Исходные номера строк сохраняйте до сортировки.
from collections import Counter
import math
found = []
# Скачайте TXT-файл этой задачи и сохраните рядом с программой.
with open("31116.txt", encoding="utf-8") as f:
for number, line in enumerate(f, start=1):
a = list(map(int, line.split()))
if len(a) != 5:
raise ValueError("Неверное число столбцов")
c = Counter(a)
s = sorted(a)
rep = [x for x in a if c[x] > 1]
single = [x for x in a if c[x] == 1]
if (sorted(c.values()) == [1, 1, 1, 1, 1]) and (2*(s[0]+s[-1]) > sum(s[1:-1])):
found.append((number, sum(a)))
print(found[0][1])