Решение на Python
Шаг 1. Чтение строк файла и нумерация
f = open('9.txt')
for i, line in enumerate(f, start=1):
print(i, line)
break
📌 Результат: для каждой строки получаем её номер и содержимое (на примере первой строки).
Шаг 2. Преобразование строки в список чисел
f = open('9.txt')
for i, line in enumerate(f, start=1):
nums = list(map(int, line.split()))
print(i, nums)
break
📌 Результат: строка превращается в список целых чисел, например [3, 7, 10, 2, 6].
Шаг 3. Проверка, что все числа различны
f = open('9.txt')
for i, line in enumerate(f, start=1):
nums = list(map(int, line.split()))
if len(nums) == len(set(nums)):
print(i, nums, '— все числа различны')
else:
print(i, nums, '— есть одинаковые')
break
📌 Результат: если len(nums) == len(set(nums)), все пять чисел в строке различны.
Шаг 4. Среднее арифметическое и медиана
f = open('9.txt')
for i, line in enumerate(f, start=1):
nums = list(map(int, line.split()))
avg = sum(nums) / len(nums)
med = sorted(nums)[len(nums) // 2]
print(i, nums)
print('avg =', avg, 'med =', med, '|avg-med| =', abs(avg - med))
break
📌 Результат: считаем avg и med (средний элемент отсортированного ряда).
Шаг 5. Проверка условия и получение ответа
# Таблица уже сохранена в файле 9.txt. Открываем файл и задаём best_sum.
f = open('9.txt')
best_sum = 0
# Читаем строки: разбиваем на числа и проверяем, что все различны.
for line in f:
nums = list(map(int, line.split()))
if len(nums) != len(set(nums)):
continue
# Считаем среднее арифметическое и медиану (среднее из отсортированных).
avg = sum(nums) / len(nums)
med = sorted(nums)[len(nums) // 2]
# Если среднее отличается от медианы не более чем на 20% — запоминаем сумму строки.
if abs(avg - med) <= 0.2 * avg:
best_sum = sum(nums)
# Выводим ответ.
print(best_sum)
Перебираем все строки. Если числа различны и |avg − med| ≤ 0,2×avg, запоминаем сумму строки. После цикла останется сумма в строке с наибольшим номером.
📌 Ответ: 1469.
Решение. Проверим, что все числа в строке различны. В ячейку F1 введём:
=СЧЁТЕСЛИ($A1:E1;A1)
и скопируем по строке до J28000.
В K1 — признак «все различны»:
=ЕСЛИ(СЧЁТЕСЛИ(F1:J1;1)=5;1;0)
В L1 — среднее арифметическое чисел строки:
=СУММ(A1:E1)/5
В M1 — медиана:
=МЕДИАНА(A1:E1)
В N1 — оба условия (различны и среднее отличается от медианы не более чем на 20 %):
=ЕСЛИ(И(K1=1;АБС(L1-M1)<=0,2*L1);1;0)
Скопируем формулы вниз до строки 28000, включим фильтр по столбцу N (значение 1).
Среди отфильтрованных строк найдём строку с наибольшим номером и посчитаем сумму чисел в столбцах A–E.
Получим ответ — 1469.