Информатика · тема 9 из 13 · ЕГЭ № 8

Комбинаторика: слова, перестановки, размещения

Как подсчитывать слова и коды, не перебирая их вручную: правила сложения и умножения, формулы и номер слова в алфавитном списке.

18 мин чтенияЕГЭ17 заданий

Коротко

главное за 30 секунд
  1. Правило умножения: независимые выборы перемножают; правило сложения: взаимоисключающие случаи складывают
  2. Слова длины n из k букв с повторами: kn
  3. Перестановки n разных элементов: n!; размещения без повторов из n по k: n!/(n−k)!
  4. Сочетания (порядок не важен): C(n, k) = n!/(k!·(n−k)!)
  5. Номер слова в алфавитном списке — это число в системе счисления с основанием k (плюс 1)
  6. Если формула не очевидна — перебор в Python: itertools.product и itertools.permutations

Правила умножения и сложения

Умножение. Если первый выбор можно сделать $a$ способами, а второй (независимо от первого) — $b$ способами, то пару выборов — $a \cdot b$ способами.
Сложение. Если объект можно выбрать $a$ способами или $b$ способами, причём случаи не пересекаются, то всего $a + b$ способов.

Пример. Из города А в город Б ведут 3 дороги, из Б в В — 4. Маршрутов А → Б → В: 3 · 4 = 12. А чтобы купить один предмет — ручку (5 видов) или карандаш (4 вида) — способов 5 + 4 = 9.

Проверь себя. Сколько существует четырёхбуквенных слов из букв А, Б, В (буквы могут повторяться)? Ответьте числом.

Ответ: 81

АБВ3 дороги4 дороги3 · 4 = 12 маршрутов А → Б → В
Рис. 1. Правило умножения: 3 дороги из А в Б и 4 дороги из Б в В дают 3 · 4 = 12 маршрутов

Размещения, перестановки, сочетания

СитуацияФормулаПример
Слова длины $n$ из $k$ букв, повторы разрешены$k^n$PIN из 4 цифр: $10^4$
Размещения без повторов (важен порядок)$A_n^k = \dfrac{n!}{(n-k)!}$трёхзначные числа из цифр 1–5 без повторов: $5\cdot4\cdot3 = 60$
Перестановки (все элементы, порядок важен)$P_n = n!$5 книг на полке: $5! = 120$
Сочетания (порядок не важен)$C_n^k = \dfrac{n!}{k!\,(n-k)!}$выбрать 3 из 7: $C_7^3 = 35$
Ловушка. Спросите себя: «Если поменять выбранные предметы местами, получится другой результат?» Если да — порядок важен (размещения). Если нет (комиссия, набор карт) — сочетания.
Слова с повторамиkⁿпример: 3⁴ = 81Размещения без повторовn! / (n−k)!пример: 5·4·3 = 60Перестановкиn!пример: 5! = 120Сочетания (порядок неважен)n! / (k!·(n−k)!)пример: C(7,3) = 35
Рис. 2. Четыре основные формулы комбинаторики
n=01n=111n=2121n=31331n=414641n=515101051n=61615201561C(4, 2) = 66 = 3 + 3сверху идут n, слева — k
Рис. 3. Треугольник Паскаля: C(n, k) — сумма двух чисел над ним; выделено C(4, 2) = 6

ЕГЭ-8: слова с ограничениями и номер слова

Типичные ограничения: «буква встречается ровно $m$ раз», «две гласные не стоят рядом», «все буквы разные». Разбивайте задачу на случаи и применяйте правила умножения и сложения.

Пример. Пятибуквенные слова из букв А, Б, В, Г, где Б встречается ровно 2 раза. Выбираем 2 позиции из 5 для буквы Б: $C_5^2 = 10$. Остальные три места заполняем любыми из трёх букв (А, В, Г): $3^3 = 27$. Итого $10 \cdot 27 = 270$.

Номер слова. Если все слова длины $n$ из алфавита в порядке возрастания пронумерованы с 1, то номер слова = (значение слова как числа в системе с основанием $k$) + 1, где буквы получают цифры 0, 1, …, $k-1$ по алфавиту.

Слово РИКА в алфавите А, И, К, Р: цифры Р=3, И=1, К=2, А=0; число $3\cdot4^3 + 1\cdot4^2 + 2\cdot4 + 0 = 216$; номер = $216 + 1 = 217$.

началоААА100АИ201АК302ИИА410ИИ511ИК612ККА720КИ821КК922№3-яА = 0, И = 1, К = 2; слово ИК = 12₃ = 5, номер = 5 + 1 = 6
Рис. 4. Все слова из двух букв алфавита А, И, К в алфавитном порядке: номер = значение в троичной системе + 1

Перебор в Python

Если формула не очевидна, переберите все слова программой. Модуль itertools даёт готовые генераторы.

from itertools import product, permutations

# все слова длины 4 из букв "АИКР", в алфавитном порядке
words = [''.join(w) for w in product('АИКР', repeat=4)]
print(words.index('РИКА') + 1)      # номер слова: 217

# все перестановки букв слова
perm = sorted(''.join(p) for p in permutations('АНОРТ'))
print(len(perm))                    # 120
product(s, repeat=n) — слова с повторами (размещения с повторениями); permutations(s, k) — без повторов; combinations(s, k) — сочетания. Порядок вывода product и permutations — как в алфавитном списке, если исходная строка отсортирована.
Практика

Закрепите тему: 17 заданий для ЕГЭ

От простых к сложным: базовый уровень — 3, повышенный — 9, высокий — 5. Мгновенная проверка, подсказки, подробные решения и тренажёр ошибок.

Решать задания по теме Флеш-карточки