Решение на 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 line in f:
nums = list(map(int, line.split()))
values = set(nums)
freqs = sorted(nums.count(x) for x in values)
print(nums, '→', freqs)
break
📌 Результат: в подходящей строке частоты [1, 1, 2, 3] — одно число трижды, другое дважды, остальные два различны.
Шаг 4. Максимум строки встречается ровно один раз
f = open('9.txt')
for line in f:
nums = list(map(int, line.split()))
values = set(nums)
freqs = sorted(nums.count(x) for x in values)
if freqs == [1, 1, 2, 3]:
mx = max(nums)
print(nums, 'max =', mx, 'раз =', nums.count(mx))
break
📌 Результат: второе условие эквивалентно тому, что max(nums) встречается ровно один раз (тогда максимум среди повторяющихся меньше максимума среди уникальных).
Шаг 5. Проверка условия и получение ответа
# Открываем файл 9.txt и задаём count.
f = open('9.txt')
count = 0
# Читаем строки и собираем частоты чисел.
for line in f:
nums = list(map(int, line.split()))
values = set(nums)
freqs = sorted(nums.count(x) for x in values)
# Нужны тройка, пара и два уникальных числа.
if freqs != [1, 1, 2, 3]:
continue
# Максимум строки должен встречаться ровно один раз.
if nums.count(max(nums)) != 1:
continue
count += 1
# Выводим ответ.
print(count)
Перебираем все строки. Если оба условия выполнены, увеличиваем счётчик. В конце выводим количество подходящих строк.
📌 Ответ: 491.
Решение. Сначала проверим первое условие — одно число трижды, другое дважды, остальные два различны. В ячейку H1 введём:
=СЧЁТЕСЛИ($A1:G1;A1)
и скопируем по строке до N1, затем вниз до строки 20000.
В O1 — признак «тройка + пара + два уникальных»:
=ЕСЛИ(И(СЧЁТЕСЛИ(H1:N1;3)=3;СЧЁТЕСЛИ(H1:N1;2)=2;СЧЁТЕСЛИ(H1:N1;1)=2);1;0)
Второе условие эквивалентно тому, что наибольшее число строки встречается ровно один раз. В P1:
=ЕСЛИ(СЧЁТЕСЛИ($A1:G1;МАКС(A1:G1))=1;1;0)
В Q1 объединим оба признака:
=ЕСЛИ(И(O1=1;P1=1);1;0)
Скопируем формулы вниз, включим фильтр по Q = 1 и посчитаем количество оставшихся строк.
Получим ответ — 491.