ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Электронные таблицы и формулы.
| КЭС: | 4.2 Анализ данных с помощью электронных таблиц. Вычисление суммы, среднего арифметического, наибольшего (наименьшего) значения диапазона. Вычисление коэффициента корреляции двух рядов данных. Построение столбчатых, линейчатых и круговых диаграмм. Построение графиков функций. Подбор линии тренда, решение задач прогнозирования. Решение задач оптимизации с помощью электронных таблиц |
| Тип ответа: | Краткий ответ |
Ответ: 13609
Решение.
В файле 16000 строк по 7 натуральных чисел. Первая строка содержит данные, поэтому её номер равен 1; дополнительную строку заголовков при нумерации не добавляем. Проверяем оба условия для каждой исходной строки и сохраняем её настоящий номер.
Для каждого различного значения считаем число его появлений в строке. Должно быть одно значение r с частотой 3 и четыре значения с частотой 1. Это точная проверка: строки с дополнительной парой или с большей кратностью не допускаются. Неповторяющиеся значения обозначим u₁, u₂, u₃, u₄.
Повторяющееся значение единственно, поэтому оно же является максимальным среди повторяющихся. Неравенство среднего арифметического имеет вид u₁ + u₂ + u₃ + u₄4 > r. Умножаем обе части на положительное число 4: u₁ + u₂ + u₃ + u₄ > 4r.
Нужно получить наибольший исходный номер строки. Поэтому после каждой подходящей строки заменяем сохранённый номер текущим; после полного просмотра останется последний подходящий. Число подходящих строк само по себе не является ответом.
Проверить отбор можно программой Python. Для неё копируем только исходные числовые ячейки листа в текстовый файл data.txt: одна строка таблицы на строку файла, числа разделены пробелами или табуляциями. Строки не сортируем и не добавляем заголовок.
from collections import Counter
selected = []
with open("data.txt", encoding="utf-8-sig") as f:
rows = [list(map(int, line.split())) for line in f if line.strip()]
for number, a in enumerate(rows, 1):
assert len(a) == 7
f = Counter(a)
single = [v for v in f if f[v] == 1]
repeated = [v for v in f if f[v] == 3]
ok = len(single) == 4 and len(repeated) == 1
if ok:
ok = sum(single) > 4 * repeated[0]
if ok:
selected.append((number, a))
print(selected[-1][0])Полный отбор дал 36 подходящих строк. Последняя из них имеет номер 13609. Её значения: 25, 83, 89, 25, 25, 57, 93.
Повторяется число 25; четыре остальных значения различны. Сумма неповторяющихся равна 322, а 4 · 25 = 100. Первое число больше второго, как и требуется. Все строки с большим номером проверены и не удовлетворяют одновременно обоим условиям.
Проверка. Независимый отбор через сортировку значений и длины серий совпал с подсчётом частот по всем номерам выбранных строк. Данные ODS и XLSX совпали по каждой числовой ячейке.
Ответ: 13609.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINFA8C919.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.