Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Комбинаторика – раздел математики, где ставится вопрос о подсчете числа вариантов выбора элементов из некоторого множества согласно определенным правилам.

В задании №8 в ЕГЭ по информатике присутствуют задачи по теме "Комбинаторика", которые могут быть решены как с помощью формул, так и средствами программирования. Как правило, на динамическое программирование задачи в данном задании отсутствуют. Используя сразу два метода при решении задачи, можно с высокой долей вероятности гарантировать получение верного ответа в случае его совпадения в обоих решениях.

Далее рассмотрим основные понятия и формулы по данной теме.

Размещение

Размещение – упорядоченный набор из k различных элементов некоторого n-элементного множества.

Ank=n!(n−k)!

Размещение с повторением

Размещение с повторением – упорядоченный набор из k элементов некоторого n-элементного множества.

A‾‾‾nk=nk

Перестановка

Перестановка – последовательность и n различных элементов.

P n = n !

Перестановка с повторением

Перестановка с повторением – последовательность, содержащая n элементов из k типов.

P(n1,n2,..., nk)=n!n1!⋅n2!⋅...⋅nk!

aa...a⏟n1 bb...b⏟n2 ... xx...x⏟nk 

Сочетание

Сочетанием из n элементов по k называются подмножества содержащие k элементов из n.

Cnk=n!k!⋅(n−k)! 

Следует также упомянуть ряд полезных формул с сочетаниями:

Cnk=Cnn−k

Cnk=Cn−1k−1+Cn−1k

Cn0+Cn1+...+Cnn=2n

(x+y)n=Cn0⋅xn⋅y0+...+Cnk⋅xn−k⋅yk+...+Cnn⋅x0⋅yn

Сочетание с повторением

Сочетанием с повторением называются наборы из k элементов n - элементного множества, возможно с повторяющимися элементами. Порядок элементов не учитывается.

C‾‾‾nk=Cn+k−1k=(n+k−1)!k!⋅(n−k)! 

Вычисление факториала и сочетаний в Python

Самостоятельная реализация:

Реализация с использованием библиотеки math:

Генерация комбинаторных списков в Python

Библиотека itertools языка Python содержит функции, позволяющие генерировать комбинаторные списки:

Далее, более детально разберем приведенные выше генераторы:

Декартово произведение (product)

Перестановки (permutations)

Сочетания (combinations)

Сочетания с повторениями (combinations_with_replacement)

 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 ЕГЭ по информатике
 Авторские задачи
 Тренировочные олимпиады
 Задание 1
 Задание 5
 Задание 6
 Задание 8
 Задание 10
 Задание 11
 Задание 12
 Задание 13
 Задание 14
 Задание 15
 Задание 16
 Задание 17
 Задание 18
 Задания 19-21
 Задание 22
 Задание 24
 Задание 25
 Задание 26
 Задание 27
 Подсчёт комбинаций
 Упорядоченный список
 Сложные задачи
 A. Слова из имени
 B. Настольный теннис
 C. Хоккей
 D. Салаты
 E. Шахматы - 2
 F. Карточки
 G. Игра с друзьями - 1
 H. Великий комбинатор

Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru