(Л. Шастин) Откройте файл электронной таблицы, содержащей в каждой строке шесть натуральных чисел.
Определите количество строк таблицы, состоящих из чисел, для которых выполнены оба условия:
- в строке только одно число повторяется трижды, остальные числа различны;
- куб максимального числа строки больше произведения всех её неповторяющихся чисел.
В ответе запишите только число.
Решение на 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, 1, 1, 3].
Шаг 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, 1, 1, 3]:
continue
unique = [x for x in values if nums.count(x) == 1]
print(i, nums, 'max^3=', max(nums) ** 3, 'prod=', unique[0] * unique[1] * unique[2])
break
📌 Результат: сравниваем max(nums) ** 3 с произведением трёх чисел, встречающихся один раз.
Шаг 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, 1, 1, 3]:
continue
unique = [x for x in values if nums.count(x) == 1]
# Если куб максимума больше произведения неповторяющихся — увеличиваем счётчик
if max(nums) ** 3 > unique[0] * unique[1] * unique[2]:
count += 1
# Выводим count — количество подходящих строк. Жми RUN
print(count)
Перебираем строки. Отбираем схему 3+1+1+1 и проверяем: куб максимума > произведение неповторяющихся. Считаем такие строки и выводим count.
📌 Ответ: 497.
Решение. Сначала проверим первое условие. В ячейку G1 введём формулу:
=СЧЁТЕСЛИ($A1:$F1;A1)
и скопируем её по строке до L1, затем вниз до строки 25000. В каждой ячейке окажется, сколько раз соответствующее число встречается в строке.
В ячейку M1 введём формулу:
=ЕСЛИ(И(СЧЁТЕСЛИ(G1:L1;3)=3;СЧЁТЕСЛИ(G1:L1;1)=3);1;0)
Если одно число повторяется трижды (в счётчиках три тройки), а остальные три различны (три единицы), в столбце M будет 1, иначе 0.
Для второго условия в N1 найдём максимальное число строки:
=МАКС(A1:F1)
а в O1 — произведение неповторяющихся чисел (число берём, если его счётчик равен 1, иначе множитель 1):
=ЕСЛИ(G1=1;A1;1)*ЕСЛИ(H1=1;B1;1)*ЕСЛИ(I1=1;C1;1)*ЕСЛИ(J1=1;D1;1)*ЕСЛИ(K1=1;E1;1)*ЕСЛИ(L1=1;F1;1)
В P1 объединим оба условия:
=ЕСЛИ(И(M1=1;N1^3>O1);1;0)
Скопируем формулы M–P вниз до строки 25000, включим фильтр по столбцу P (значение 1) и посчитаем количество оставшихся строк.
Получим ответ — 497.