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

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


 

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

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

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

Размещение

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

Ank=n!(nk)!

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

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

A‾‾‾nk=nk

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

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

P n = n !

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

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

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

aa...an1 bb...bn2 ... xx...xnk 

Сочетание

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

Cnk=n!k!(nk)! 

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

Cnk=Cnnk

Cnk=Cn1k1+Cn1k

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

(x+y)n=Cn0xny0+...+Cnkxnkyk+...+Cnnx0yn

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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