Откройте файл электронной таблицы, содержащей в каждой строке пять натуральных чисел.
Определите количество строк таблицы, для которых выполнены оба условия:
- в строке два различных числа встречаются по два раза, а ещё одно число — один раз;
- число, встречающееся один раз, больше среднего арифметического двух чисел, встречающихся по два раза.
В ответе запишите только число.
Задание выполняется с использованием прилагаемого файла.
Решение на 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()))
values = set(nums)
counts = sorted(nums.count(x) for x in values)
print(i, nums, counts)
break
📌 Результат: подходящая схема — sorted(counts) == [1, 2, 2].
Шаг 4. Уникальное и среднее двух парных
f = open('9.txt')
for i, line in enumerate(f, start=1):
nums = list(map(int, line.split()))
values = set(nums)
if sorted(nums.count(x) for x in values) != [1, 2, 2]:
continue
uniq = next(x for x in values if nums.count(x) == 1)
pairs = [x for x in values if nums.count(x) == 2]
print(i, nums, 'uniq=', uniq, 'avg pairs=', sum(pairs) / 2)
break
📌 Результат: сравниваем uniq со средним двух чисел, встречающихся дважды.
Шаг 5. Проверка условия и получение ответа
# Таблица уже сохранена в файле 9.txt. Открываем его и задаём count
f = open('9.txt')
count = 0
# Читаем строки: разбиваем на числа и собираем множество различных значений
for line in f:
nums = list(map(int, line.split()))
values = set(nums)
# Две пары и одно уникальное число
if sorted(nums.count(x) for x in values) != [1, 2, 2]:
continue
uniq = next(x for x in values if nums.count(x) == 1)
pairs = [x for x in values if nums.count(x) == 2]
# Если уникальное больше среднего двух парных — увеличиваем счётчик
if uniq > sum(pairs) / 2:
count += 1
# Выводим count — количество подходящих строк. Жми RUN
print(count)
Перебираем строки. Отбираем схему 2+2+1 и проверяем: уникальное > среднее двух парных. Считаем такие строки и выводим count.
📌 Ответ: 3993.
Решение. Сначала найдём строки со схемой «две пары + одно уникальное». В ячейку F1 введём:
=СЧЁТЕСЛИ($A1:$E1;A1)
и скопируем по строке до J1, затем вниз до строки 28000.
В K1 — признак схемы (четыре двойки и одна единица в счётчиках):
=ЕСЛИ(И(СЧЁТЕСЛИ(F1:J1;2)=4;СЧЁТЕСЛИ(F1:J1;1)=1);1;0)
В L1 — число, встречающееся один раз; в M1 — среднее арифметическое двух чисел, встречающихся по два раза:
=СУММЕСЛИ(F1:J1;1;A1:E1)
=СУММЕСЛИ(F1:J1;2;A1:E1)/4
В N1 объединим оба условия:
=ЕСЛИ(И(K1=1;L1>M1);1;0)
Скопируем формулы вниз до строки 28000, включим фильтр по столбцу N (значение 1) и посчитаем количество оставшихся строк.
Получим ответ — 3993.