Комбинаторика и множества на Python: как решать + 4 задач с проверкой

Комбинаторика и множества — это про «сколько всего» и «сколько подходит под условия», когда перебор слишком дорогой. На олимпиадах это встречается в задачах про окрашенные кубики (как в CubeCraft), сломанные сегменты на табло, круговые турниры (сколько матчей, пар, расписаний), пути по клетчатому полю с запретами и ловушками.

Как распознать, что нужна комбинаторика:

Суть приёма: мы описываем множество всех вариантов и считаем его размер через разбиение на непересекающиеся случаи или через операции над множествами (объединение, пересечение, дополнение). Часто помогает принцип включения-исключения: сначала складываем «подходят условию A» и «подходят условию B», затем вычитаем те, кто посчитался дважды, и так далее. Это ускоряет решение, потому что вместо перебора получаем формулу и считаем за O(1) или O(log n).

С чего начать учиться:

Ниже — задачи с автопроверкой и разбором подхода.

Задачи по теме «Комбинаторика и множества»

Смежные темы

Весь каталог задач