ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Электронные таблицы и формулы.
| КЭС: | 4.2 Анализ данных с помощью электронных таблиц. Вычисление суммы, среднего арифметического, наибольшего (наименьшего) значения диапазона. Вычисление коэффициента корреляции двух рядов данных. Построение столбчатых, линейчатых и круговых диаграмм. Построение графиков функций. Подбор линии тренда, решение задач прогнозирования. Решение задач оптимизации с помощью электронных таблиц |
| Тип ответа: | Краткий ответ |
Ответ: 1922
Разберём оба условия отдельно, а затем проверим их для каждой строки файла.
Пусть после сортировки пять чисел строки имеют вид a ≤ b ≤ c ≤ d ≤ e. Тогда два наибольших — d и e, а три оставшихся — a, b и c. Второе условие принимает вид d + e ≤ a + b + c. Равенство разрешено: слова «не больше» включают его.
Первое условие требует попарно различных чисел. Множество set удаляет повторы, поэтому len(set(values)) == 5 выполняется ровно для строк, в которых все пять чисел различны. Строку с повтором нельзя засчитать даже тогда, когда неравенство сумм верно.
В электронной таблице можно сделать два вспомогательных столбца. Для первого условия проверить, что количество вхождений каждого из пяти значений в свою строку равно единице. Для второго сложить два наибольших значения и сравнить результат с суммой остальных. Единицу ставим только при одновременном выполнении обеих проверок, затем суммируем этот столбец.
Для воспроизводимого решения на Python сохраните лист файла задания в формате CSV с разделителем «;» под именем 1_9.csv. В таблице нет строки заголовков. Сохранение в CSV не меняет значения чисел. Программа обрабатывает строки по одной и не требует сторонних библиотек.
Полная программа на Python 3:
import csv
count = 0
with open("1_9.csv", encoding="utf-8-sig", newline="") as source:
for row in csv.reader(source, delimiter=";"):
if not row:
continue
values = [int(value) for value in row]
if len(set(values)) != 5:
continue
a, b, c, d, e = sorted(values)
if d + e <= a + b + c:
count += 1
print(count)Программа выводит 1922. Сортировка переставляет числа только внутри текущей строки, поэтому не меняет ни их различность, ни суммы двух наибольших и трёх остальных.
Проверка на исходных данных. В файле 16000 строк, по пять натуральных чисел в каждой. Ниже приведены примеры, позволяющие отдельно проверить повторы, знак сравнения и границу равенства.
| Номер строки | Пять чисел по возрастанию | Сумма двух наибольших | Сумма трёх остальных | Результат |
|---|---|---|---|---|
| 1 | 28, 39, 59, 96, 97 | 193 | 126 | Сумма больше |
| 8 | 49, 56, 85, 89, 90 | 179 | 190 | Подходит |
| 642 | 47, 52, 75, 81, 93 | 174 | 174 | Подходит |
| 7 | 67, 67, 80, 95, 99 | 194 | 214 | Есть повтор |
Дополнительная проверка количества по четырём непересекающимся частям файла:
| Номера строк | Подходящих строк |
|---|---|
| 1–4000 | 473 |
| 4001–8000 | 473 |
| 8001–12000 | 483 |
| 12001–16000 | 493 |
Итого: 473 + 473 + 483 + 493 = 1922. Среди подходящих строк в 93 случаях суммы равны; при ошибочном строгом сравнении все они были бы потеряны.
Независимая проверка без сортировки даёт тот же список номеров: наибольшую сумму пары можно найти перебором всех десяти пар в строке. Если M — эта сумма, а S — сумма пяти чисел, то нужное неравенство имеет вид 2M ≤ S. Различность при такой проверке устанавливается сравнением каждой пары чисел. Оба алгоритма выбрали одни и те же 1922 строки.
Ответ: 1922.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF34D0FC.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.