ФИПИ · ЕГЭ · все форматы ответа · 2475 заданий
Тип задачи: Электронные таблицы и формулы.
| КЭС: | 4.2 Анализ данных с помощью электронных таблиц. Вычисление суммы, среднего арифметического, наибольшего (наименьшего) значения диапазона. Вычисление коэффициента корреляции двух рядов данных. Построение столбчатых, линейчатых и круговых диаграмм. Построение графиков функций. Подбор линии тренда, решение задач прогнозирования. Решение задач оптимизации с помощью электронных таблиц |
| Тип ответа: | Краткий ответ |
Ответ: 58
Решение.
В файле 12000 строк по 6 натуральных чисел. Первая строка содержит данные, поэтому её номер равен 1; дополнительную строку заголовков при нумерации не добавляем. Проверяем оба условия для каждой исходной строки и сохраняем её настоящий номер.
Для каждого различного значения считаем число его появлений в строке. Должно быть одно значение r с частотой 2 и четыре значения с частотой 1. Это точная проверка: строки с дополнительной парой или с большей кратностью не допускаются. Неповторяющиеся значения обозначим u₁, u₂, u₃, u₄.
Второе условие имеет вид r > u₁ + u₂ + u₃ + u₄4. Умножаем обе части на положительное число 4 и получаем 4r > u₁ + u₂ + u₃ + u₄. Так проверка использует только целые числа, без округления среднего.
В итоговое среднее включаем все шесть чисел каждой подходящей строки, в том числе оба экземпляра повторяющегося. Если выбрано k строк, знаменатель равен 6k. Целую часть берём после суммирования всех значений; усечение промежуточных средних может изменить результат.
Проверить отбор можно программой 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))
total = sum(sum(a) for i, a in selected)
print(divmod(total, 6 * len(selected))[0])Выбрано 869 строк, то есть 5214 чисел. Их сумма равна 307439. Искомое среднее равно 3074395214. Проверка целой части: 307439 = 5214 · 58 + 5027, где 0 ≤ 5027 < 5214; ответ равен 58.
Проверка. Независимый отбор через сортировку значений и длины серий совпал с подсчётом частот по всем номерам выбранных строк. Данные ODS и XLSX совпали по каждой числовой ячейке.
Ответ: 58.
Напишите пожелание к сайту или решению либо сообщите о найденной неточности в задании EGEINF6E4E0E.
Сообщение увидит только команда сайта: на странице оно не публикуется.
Комментарии к решению
Комментарии видны всем посетителям сайта.
Комментариев пока нет. Будьте первым.
Чтобы оставить комментарий, войдите или зарегистрируйтесь.