Математика · 2026/27 · первая попытка · 10 класс

Расстановки без двух запрещённых троек

Условие

Все числа от 11 до 55 выписали в ряд в каком-то порядке (каждое по одному разу). Расстановку этих чисел назовём хорошей, если в ней нельзя выбрать три числа a,b,ca,b,c, стоящие именно в таком порядке слева направо (не обязательно подряд), для которых либо a<b<ca<b<c (три числа идут по возрастанию), либо b<c<ab<c<a (первое из трёх — самое большое, а два следующих идут по возрастанию). Сколько существует хороших расстановок?

О задаче · 10 класс
Олимпиада
Физтех
Предмет / класс
Математика · 10 класс
Сезон / этап
2026/27 · первая попытка

Исследуй задачу

Самостоятельное исследованиеОткрыть модель

Пробуй свои варианты. Разбор останется закрытым.

Измени модель и проверь свою догадку.

Своя гипотезаСоберите расстановку и проверьте тройки

Выберите порядок чисел 1–5. Проверка найдёт запрещённые тройки, даже если их числа стоят не рядом.

Проверка на бумаге. Для своего ряда выпишите все тройки позиций i < j < k. У каждой сравните числа: запрещены a < b < c и b < c < a. Всего троек позиций десять.

Разбор ниже доступен и без интерактива.

Записать идею

Попробуй решить сам

Поставьте число 55 на какое-нибудь место. Каким должен быть порядок чисел слева и справа от него, чтобы сразу не возникла запрещённая тройка?

Подсказка 1

Какая запрещённая тройка появится, если с одной стороны от 5 найдётся возрастающая пара? Проверьте левую и правую стороны отдельно.

Подсказка 2

Пусть обе части уже убывают. Может ли между двумя числами левой части по величине находиться число, оставленное справа? Проверьте такую тройку.

Разобрать решение по шагам

1. Число 5 заставляет обе части убывать

Разделим ряд на числа слева от 55, само 55 и числа справа. Если слева найдутся два числа a<ba<b в таком порядке, то a,b,5a,b,5 образуют запрещённую возрастающую тройку. Поэтому левая часть убывает. Если справа найдутся b<cb<c в таком порядке, то 5,b,c5,b,c имеют вид b<c<5b<c<5 и также запрещены. Поэтому правая часть тоже убывает.

2. В левой части не может быть пропуска по величине

Допустим, слева есть числа u>vu>v, а число tt с v<t<uv<t<u осталось справа. Поскольку левая часть убывает, в ряду числа u,v,tu,v,t идут именно в таком порядке. При этом v<t<uv<t<u — второй запрещённый вид. Значит, если левая часть непуста, она состоит из всех чисел некоторого промежутка среди 1,2,3,41,2,3,4, выписанных по убыванию. Например, допустимый по этому правилу набор {2,3,4}\{2,3,4\} даёт блок 4,3,24,3,2; набор {2,4}\{2,4\} оставляет запрещающий пропуск 33.

3. Доказываем достаточность найденного правила

Возьмём слева любой непустой промежуток чисел и запишем его по убыванию. Справа от 55 запишем все остальные числа также по убыванию.

Возрастающая тройка невозможна:

  • без 55 хотя бы два из трёх чисел лежат в одной убывающей части;
  • с 55 понадобилась бы возрастающая пара слева.

Проверим второй запрещённый вид. В нём последние два числа должны возрастать. Они не могут оба лежать в одной части: каждая часть убывает.

Для тройки без 55 остаётся только случай: первые два числа u>vu>v слева, третье tt справа. Запрет потребовал бы v<t<uv<t<u, но все числа между uu и vv уже находятся в левом промежутке.

Тройка второго вида с 55 потребовала бы возрастающей пары справа — её тоже нет. Итак, правило достаточно.

Если слева пусто, весь ряд убывает и также подходит.

4. Считаем все промежутки

По выбранному левому промежутку весь ряд определяется однозначно: слева и справа порядок уже задан. Среди четырёх чисел промежутков длины k≥1k\ge1 ровно 5−k5-k — можно выбрать их наименьшее число от 11 до 5−k5-k.

Выпишем все хорошие расстановки. Например, запись 1543215432 обозначает ряд 1,5,4,3,21,5,4,3,2.

Чисел слева от 55 Хорошие расстановки Количество
00 5432154321 11
11 1543215432
2543125431
3542135421
4532145321
44
22 2154321543
3254132541
4352143521
33
33 3215432154
4325143251
22
44 4321543215 11

Всего хороших расстановок:

1+4+3+2+1=11.1+4+3+2+1=11.

Другой способ: полный перебор на Python

Можно поручить компьютеру две простые работы: сначала составить все расстановки чисел от 11 до 55, затем проверить каждую по условию.

1. Составляем все расстановки. Пять вложенных циклов выбирают первое, второе, третье, четвёртое и пятое числа. Названия first, second, third, fourth, fifth обозначают именно эти места. Если очередное число уже встречалось слева, команда continue пропускает его и берёт следующее значение того же цикла.

Здесь range(1, 6) даёт числа 1,2,3,4,51,2,3,4,5: правая граница 66 не включается. 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 выводит результат; пять чисел в последней строке печатаются через пробел.

Почему перебор полный? Для первого места подходят 55 чисел, для второго — 44 оставшихся, затем 33, 22 и 11. Поэтому в rows попадут все 5⋅4⋅3⋅2⋅1=1205\cdot4\cdot3\cdot2\cdot1=120 расстановок. Ни одна не потеряется: её числа обязательно встретятся в соответствующих циклах. Ни одна не появится дважды: каждое сочетание значений пяти циклов встречается ровно один раз.

В каждом ряду первый выбранный индекс i принимает значения 0,1,20,1,2 — после него должны остаться ещё два места. Индекс j идёт от i + 1 до 33, а k — от j + 1 до 44. Так проверяются все 1010 троек позиций, включая несоседние. Оба запрета проверяются для каждой тройки.

Программа выводит число хороших расстановок, затем каждую из них:

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

Получены ровно те же 1111 расстановок, что и в таблице основного решения. Программа проверяет каждую возможность, а основное доказательство объясняет, почему хорошие расстановки имеют именно такую структуру.

Ответ

1111

Главная идея

Наибольшее число заставляет обе соседние части убывать, а второй запрет дополнительно запрещает пропуски по величине в левой части.

Как узнать приём

При запрете троек полезно сначала закрепить самое большое или самое маленькое число: оно превращает часть запретов в условия на пары.

Возможная ошибка

Считать только тройки соседних позиций. В условии разрешено выбирать числа с пропусками, поэтому, например, запрещающий третий элемент может стоять далеко справа.

Перенос метода

После получения необходимой структуры доказывайте и обратное: каждая построенная по ней расстановка должна проходить все исходные запреты.

Проверка полноты, границ и достижимости

Доказаны необходимость и достаточность структуры, взаимно однозначное соответствие с пустым блоком или интервалом, отсутствие двойного счёта. Полный перебор 120 перестановок и всех 10 троек индексов каждой подтвердил 11 и распределение 1,4,3,2,1.

Источник и авторство

Физтех · математика · 10 класс · 2026/27 · отборочный этап, первая попытка. Официальная задача 7.1 (ID 6134).

Официальные условия ↗ · Решения организатора ↗

Объяснение, подсказки и наглядные модели — Popov Academy. Решение проверено; ответ сопоставлен с официальным. Подборка содержит задачи из разных числовых вариантов.

Рисунок

Увеличенный рисунок можно двигать в стороны и вверх-вниз.