Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел.
Определите количество строк таблицы, для чисел которых выполнены оба условия:
- в строке есть два числа, каждое из которых повторяется дважды, остальные два числа различны;
- среднее арифметическое всех повторяющихся чисел строки меньше её максимального неповторяющегося числа.
В ответе запишите только число.
Решение
В каждой строке шесть чисел. Считаем строки, где два числа встречаются по два раза, остальные два различны, и среднее повторяющихся меньше максимального неповторяющегося.
# Открываем файл 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, 1, 2, 2]:
continue
# Считаем среднее повторяющихся и максимум неповторяющихся.
pairs = [x for x in values if nums.count(x) == 2]
uniques = [x for x in values if nums.count(x) == 1]
avg = sum(pairs) / 2
# Если среднее меньше максимума неповторяющихся — увеличиваем счётчик.
if avg < max(uniques):
count += 1
# Выводим ответ.
print(count)
Ответ: 1130.
Решение. Проверим первое условие — два числа по два раза, остальные два различны. В G1:
=СЧЁТЕСЛИ($A1:F1;A1)
скопируем по строке до L8200.
В M1 — признак «две пары и два уникальных»:
=ЕСЛИ(И(СЧЁТЕСЛИ(G1:L1;2)=2;СЧЁТЕСЛИ(G1:L1;1)=2);1;0)
В N1 — сумма всех повторяющихся чисел (с учётом повторов), в O1 — их среднее, в P1 — максимум неповторяющихся.
=СУММЕСЛИ(G1:L1;2;A1:F1)
=N1/4
=МАКС((G1=1)*A1;(H1=1)*B1;(I1=1)*C1;(J1=1)*D1;(K1=1)*E1;(L1=1)*F1)
В Q1 объединим условия:
=ЕСЛИ(И(M1=1;O1<P1);1;0)
Скопируем формулы вниз, включим фильтр по Q и посчитаем строки.
Получим ответ — 1130.