ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Электронные таблицы и формулы.
| КЭС: | 4.2 Анализ данных с помощью электронных таблиц. Вычисление суммы, среднего арифметического, наибольшего (наименьшего) значения диапазона. Вычисление коэффициента корреляции двух рядов данных. Построение столбчатых, линейчатых и круговых диаграмм. Построение графиков функций. Подбор линии тренда, решение задач прогнозирования. Решение задач оптимизации с помощью электронных таблиц |
| Тип ответа: | Краткий ответ |
Ответ: 11990
Решение.
В файле 12000 строк по 6 натуральных чисел. Первая строка содержит данные, поэтому её номер равен 1; дополнительную строку заголовков при нумерации не добавляем. Проверяем оба условия для каждой исходной строки и сохраняем её настоящий номер.
Для каждого различного значения считаем число его появлений в строке. Должно быть одно значение r с частотой 2 и четыре значения с частотой 1. Это точная проверка: строки с дополнительной парой или с большей кратностью не допускаются. Неповторяющиеся значения обозначим u₁, u₂, u₃, u₄.
Второе условие имеет вид r > u₁ + u₂ + u₃ + u₄4. Умножаем обе части на положительное число 4 и получаем 4r > u₁ + u₂ + u₃ + u₄. Так проверка использует только целые числа, без округления среднего.
Нужно получить наибольший исходный номер строки. Поэтому после каждой подходящей строки заменяем сохранённый номер текущим; после полного просмотра останется последний подходящий. Число подходящих строк само по себе не является ответом.
Проверить отбор можно программой 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) == 6
f = Counter(a)
single = [v for v in f if f[v] == 1]
repeated = [v for v in f if f[v] == 2]
ok = len(single) == 4 and len(repeated) == 1
if ok:
ok = 4 * repeated[0] > sum(single)
if ok:
selected.append((number, a))
print(selected[-1][0])Полный отбор дал 884 подходящих строк. Последняя из них имеет номер 11990. Её значения: 73, 30, 66, 66, 78, 54.
Повторяется число 66; четыре остальных значения различны. Сумма неповторяющихся равна 235, а 4 · 66 = 264. Второе число больше первого, как и требуется. Все строки с большим номером проверены и не удовлетворяют одновременно обоим условиям.
Проверка. Независимый отбор через сортировку значений и длины серий совпал с подсчётом частот по всем номерам выбранных строк. Данные ODS и XLSX совпали по каждой числовой ячейке.
Ответ: 11990.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF1CFE4F.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.