Условие
Все числа от до выписали в ряд в каком-то порядке (каждое по одному разу). Расстановку этих чисел назовём хорошей, если в ней нельзя выбрать три числа , стоящие именно в таком порядке слева направо (не обязательно подряд), для которых либо (три числа идут по возрастанию), либо (первое из трёх — самое большое, а два следующих идут по возрастанию). Сколько существует хороших расстановок?
О задаче · 10 класс
Исследуй задачу
Самостоятельное исследованиеОткрыть модель
Пробуй свои варианты. Разбор останется закрытым.
Измени модель и проверь свою догадку.
Своя гипотезаСоберите расстановку и проверьте тройки
Выберите порядок чисел 1–5. Проверка найдёт запрещённые тройки, даже если их числа стоят не рядом.
Проверка на бумаге. Для своего ряда выпишите все тройки позиций i < j < k. У каждой сравните числа: запрещены a < b < c и b < c < a. Всего троек позиций десять.
Разбор ниже доступен и без интерактива.
Записать идеюЕсть запись
Попробуй решить сам
Поставьте число на какое-нибудь место. Каким должен быть порядок чисел слева и справа от него, чтобы сразу не возникла запрещённая тройка?
Черновик не сохраняется: текст только в этой вкладке.
Черновик изменён в другой вкладке. Твой текущий текст пока сохранён здесь, автоматическая запись остановлена.
Подсказка 1
Какая запрещённая тройка появится, если с одной стороны от 5 найдётся возрастающая пара? Проверьте левую и правую стороны отдельно.
Подсказка 2
Пусть обе части уже убывают. Может ли между двумя числами левой части по величине находиться число, оставленное справа? Проверьте такую тройку.
Разобрать решение по шагам
1. Число 5 заставляет обе части убывать
Разделим ряд на числа слева от , само и числа справа. Если слева найдутся два числа в таком порядке, то образуют запрещённую возрастающую тройку. Поэтому левая часть убывает. Если справа найдутся в таком порядке, то имеют вид и также запрещены. Поэтому правая часть тоже убывает.
2. В левой части не может быть пропуска по величине
Допустим, слева есть числа , а число с осталось справа. Поскольку левая часть убывает, в ряду числа идут именно в таком порядке. При этом — второй запрещённый вид. Значит, если левая часть непуста, она состоит из всех чисел некоторого промежутка среди , выписанных по убыванию. Например, допустимый по этому правилу набор даёт блок ; набор оставляет запрещающий пропуск .
3. Доказываем достаточность найденного правила
Возьмём слева любой непустой промежуток чисел и запишем его по убыванию. Справа от запишем все остальные числа также по убыванию.
Возрастающая тройка невозможна:
- без хотя бы два из трёх чисел лежат в одной убывающей части;
- с понадобилась бы возрастающая пара слева.
Проверим второй запрещённый вид. В нём последние два числа должны возрастать. Они не могут оба лежать в одной части: каждая часть убывает.
Для тройки без остаётся только случай: первые два числа слева, третье справа. Запрет потребовал бы , но все числа между и уже находятся в левом промежутке.
Тройка второго вида с потребовала бы возрастающей пары справа — её тоже нет. Итак, правило достаточно.
Если слева пусто, весь ряд убывает и также подходит.
4. Считаем все промежутки
По выбранному левому промежутку весь ряд определяется однозначно: слева и справа порядок уже задан. Среди четырёх чисел промежутков длины ровно — можно выбрать их наименьшее число от до .
Выпишем все хорошие расстановки. Например, запись обозначает ряд .
| Чисел слева от | Хорошие расстановки | Количество |
|---|---|---|
Всего хороших расстановок:
Другой способ: полный перебор на Python
Можно поручить компьютеру две простые работы: сначала составить все расстановки чисел от до , затем проверить каждую по условию.
1. Составляем все расстановки. Пять вложенных циклов выбирают первое, второе, третье, четвёртое и пятое числа. Названия first, second, third, fourth, fifth обозначают именно эти места. Если очередное число уже встречалось слева, команда continue пропускает его и берёт следующее значение того же цикла.
Здесь range(1, 6) даёт числа : правая граница не включается. rows = [] создаёт пустой список расстановок, а rows.append(...) добавляет в него одну готовую расстановку.
2. Проверяем любые три позиции. В списке Python места нумеруются с нуля: row[0] — первое число, row[4] — пятое. Три цикла выбирают индексы i < j < k, поэтому числа a, b, c всегда идут слева направо. Например, i = 0, j = 2, k = 4 выбирают первое, третье и пятое числа: соседство не требуется.
Перед проверкой каждой расстановки ставим is_good = True — «пока подходит». Если найдётся тройка любого из двух запрещённых видов, меняем значение на False — «не подходит». Даже одна такая тройка исключает всю расстановку.
# Составляем все расстановки без повторяющихся чисел.
rows = []
for first in range(1, 6):
for second in range(1, 6):
if second == first:
continue
for third in range(1, 6):
if third == first or third == second:
continue
for fourth in range(1, 6):
if fourth == first or fourth == second or fourth == third:
continue
for fifth in range(1, 6):
if fifth == first or fifth == second or fifth == third or fifth == fourth:
continue
rows.append([first, second, third, fourth, fifth])
# Проверяем все тройки позиций в каждой расстановке.
good_rows = []
for row in rows:
is_good = True
for i in range(0, 3):
for j in range(i + 1, 4):
for k in range(j + 1, 5):
a = row[i]
b = row[j]
c = row[k]
if a < b and b < c:
is_good = False
if b < c and c < a:
is_good = False
if is_good:
good_rows.append(row)
# Выводим количество хороших расстановок и сами расстановки.
print(len(good_rows))
for row in good_rows:
print(row[0], row[1], row[2], row[3], row[4])
В проверках or означает «или», and — «и», а == проверяет равенство. Команда if is_good: добавляет ряд в список хороших, только если значение осталось True после всех проверок. len(good_rows) считает сохранённые расстановки, а print выводит результат; пять чисел в последней строке печатаются через пробел.
Почему перебор полный? Для первого места подходят чисел, для второго — оставшихся, затем , и . Поэтому в rows попадут все расстановок. Ни одна не потеряется: её числа обязательно встретятся в соответствующих циклах. Ни одна не появится дважды: каждое сочетание значений пяти циклов встречается ровно один раз.
В каждом ряду первый выбранный индекс i принимает значения — после него должны остаться ещё два места. Индекс j идёт от i + 1 до , а k — от j + 1 до . Так проверяются все троек позиций, включая несоседние. Оба запрета проверяются для каждой тройки.
Программа выводит число хороших расстановок, затем каждую из них:
11
1 5 4 3 2
2 1 5 4 3
2 5 4 3 1
3 2 1 5 4
3 2 5 4 1
3 5 4 2 1
4 3 2 1 5
4 3 2 5 1
4 3 5 2 1
4 5 3 2 1
5 4 3 2 1
Получены ровно те же расстановок, что и в таблице основного решения. Программа проверяет каждую возможность, а основное доказательство объясняет, почему хорошие расстановки имеют именно такую структуру.
Ответ
Главная идея
Наибольшее число заставляет обе соседние части убывать, а второй запрет дополнительно запрещает пропуски по величине в левой части.
Как узнать приём
При запрете троек полезно сначала закрепить самое большое или самое маленькое число: оно превращает часть запретов в условия на пары.
Возможная ошибка
Считать только тройки соседних позиций. В условии разрешено выбирать числа с пропусками, поэтому, например, запрещающий третий элемент может стоять далеко справа.
Перенос метода
После получения необходимой структуры доказывайте и обратное: каждая построенная по ней расстановка должна проходить все исходные запреты.
Проверка полноты, границ и достижимости
Доказаны необходимость и достаточность структуры, взаимно однозначное соответствие с пустым блоком или интервалом, отсутствие двойного счёта. Полный перебор 120 перестановок и всех 10 троек индексов каждой подтвердил 11 и распределение 1,4,3,2,1.
Источник и авторство
Физтех · математика · 10 класс · 2026/27 · отборочный этап, первая попытка. Официальная задача 7.1 (ID 6134).
Официальные условия ↗ · Решения организатора ↗
Объяснение, подсказки и наглядные модели — Popov Academy. Решение проверено; ответ сопоставлен с официальным. Подборка содержит задачи из разных числовых вариантов.
Тема, знания и приёмы
Подсчёт вариантов · Продвинутая подготовка
- Перестановки различных чисел
- Необходимость и достаточность условия
- Подсчёт непересекающихся случаев
Приёмы решения: Логический вывод и исключение вариантов · Разбор случаев · Последовательный подсчёт без повторов