К содержанию

Подтема 2 из 6

Сколько раз встречается буква

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

Места для буквы

Сколько пятибуквенных слов из Т, О, Р, К, А содержат ровно две буквы О?

«Ровно k одинаковых букв» — два действия: выбрать места для этой буквы и заполнить остальные места другими буквами.

Два места из пяти можно выбрать 10 способами: порядок выбора мест не важен — «места 1 и 3» и «места 3 и 1» дают одно слово.

Все способы поставить две О на пять мест: их 5 · 4 / 2 = 10.

Остальные три места заполняют любыми буквами, кроме О, — по 4 варианта. Всего 10 · 4³ = 640 слов.

Тонкости:число сочетаний

Число способов выбрать k мест из n обозначают Cₙᵏ: выбрать места по очереди n · (n − 1) · … · (n − k + 1) способами и разделить на k! — столько порядков у каждого набора. C₅² = 5 · 4 / 2 = 10, C₆³ = 6 · 5 · 4 / 6 = 20. Слов с ровно k данными буквами — Cₙᵏ · (m − 1)ⁿ⁻ᵏ.

Разбор случаев

Если ограничение на место мешает одной формуле, слова делят на случаи и складывают. Добавим условие задачи темы: слово не начинается с А.

  • Первая буква — О: вторую О ставим на одно из 4 оставшихся мест, ещё три места — из К, Р, Т, А: 4 · 4³ = 256.
  • Первая буква — К, Р или Т: 3 варианта, две О — на 2 из 4 оставшихся мест (6 способов), ещё два места — по 4 варианта: 3 · 6 · 4² = 288.

Всего 256 + 288 = 544 слова.

«Хотя бы» и «не более»

«Хотя бы» и «не более» переводят в точные количества. Выбери формулировку, чтобы увидеть, сколько раз буква может встретиться:

ровно 2
2
не более 2
0, 1, 2
не менее 2
2, 3, 4, …
хотя бы одна
1, 2, 3, …
ни одной
0

«Хотя бы одну» короче считать через дополнение: из всех слов вычесть слова совсем без этой буквы. Слов хотя бы с одной О: 5⁵ − 4⁵ = 3125 − 1024 = 2101.

Тонкости:две обязательные буквы

Если нужны и А, и Б, вычитают слова без А и слова без Б, но слова без обеих букв вычтены дважды — их возвращают один раз. Для пятибуквенных слов из АБВГ: 4⁵ − 3⁵ − 3⁵ + 2⁵ = 570.

Проверки в программе

Каждая фраза условия — отдельная проверка в программе.

В условииПроверка
ровно две Оword.count('О') == 2
не менее двух Оword.count('О') >= 2
хотя бы одна О'О' in word
нет буквы О'О' not in word
не начинается с Аword[0] != 'А'
заканчивается гласнойword[-1] in 'АО'

Проверки соединяют . Для задачи темы на этом шаге:

from itertools import product count = 0for letters in product('АКОРТ', repeat=5):    word = ''.join(letters)    if word.count('О') == 2 and word[0] != 'А':        count += 1print(count)
544

Программа подтвердила разбор случаев: 544. word.count('АО') считает фрагменты АО подряд, а не отдельные А и О: число гласных — это word.count('А') + word.count('О').

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

Если переставляют все буквы слова с одинаковыми буквами, одинаковые буквы нельзя считать разными. У слова ТОПОТ пять букв, но две Т и две О одинаковы. Если подписать их как разные, получится 5! = 120 расстановок, и каждое настоящее слово посчитано 2! · 2! = 4 раза.

Четыре подписанных варианта дают одно обычное слово: 120 / 4 = 30.

В программе permutations считает одинаковые буквы разными, и дубликаты убирает :

from itertools import permutations print(len(list(permutations('ТОПОТ'))))print(len(set(permutations('ТОПОТ'))))
120 30

Итого

  • Ровно kместа для буквы, остальные — другими буквами
  • Разбор случаевпо первой букве, затем сложить
  • Хотя бы однавсе минус без этой буквы
  • Проверкиcount, in, word[0]
  • Повторы буквn! / (a! · b! · …)

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
Сколько пятибуквенных слов из АБВГ содержат ровно две А?
ОтветСкрыть ответ
Ответ
270: места для двух А — 10, остальные три места — 3³ = 27.
Вопрос 2
Почему для той же задачи неверно 10 · 4³, то есть остальные места заполнять любыми из четырёх букв?
ОтветСкрыть ответ
Ответ
На остальных местах снова могла бы появиться А — и в слове было бы больше двух.
Вопрос 3
Сколько четырёхбуквенных слов из АБВ содержат хотя бы одну А?
ОтветСкрыть ответ
Ответ
65: всего 3⁴ = 81, без А — 2⁴ = 16, 81 − 16.
Вопрос 4
Сколько раз может встретиться буква при условии «не более одной»?
ОтветСкрыть ответ
Ответ
0 или 1: отсутствие буквы тоже подходит.
Вопрос 5
Почему проверка word.count('АБ') == 1 не подходит для условия «в слове одна А и одна Б»?
ОтветСкрыть ответ
Ответ
count('АБ') ищет фрагмент АБ подряд: в слове БГА одна А и одна Б, а фрагмента нет. Нужно word.count('А') == 1 and word.count('Б') == 1.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Ровно две А

Сколько пятибуквенных слов из АБВГД содержит ровно две А? Повторения разрешены.

Введите число.

Ровно три гласные

Сколько пятибуквенных слов из АОБВГ содержит ровно три гласные?

Введите число.

Слова Васи

Вася составляет 6-буквенные слова из букв К, О, Р, А, Л. Буква К должна встречаться ровно два раза, остальные буквы — любое количество раз или не встречаться совсем. Слово не может начинаться с буквы А. Сколько слов может составить Вася?

Введите число.

Коды Светы

Света составляет 5-буквенные коды из букв П, А, Р, У, С. Каждую букву можно использовать любое количество раз, при этом в коде должно быть не менее двух гласных, а последней буквой не может быть С. Сколько различных кодов может составить Света?

Введите число.

Сколько пятибуквенных слов из АБВ содержит хотя бы одну Б? Повторения разрешены.

Введите число.

Не более одной А

Сколько четырёхбуквенных слов из АБВГ содержит не более одной А?

Введите число.

Сколько четырёхбуквенных слов из АБВГД содержит и А, и Д?

Введите число.

Перестановки слова АНАНАС

Сколько различных слов получается перестановкой всех букв слова АНАНАС?

Введите число.

Перестановки слова КОЛОКОЛ

Сколько различных кодов можно составить перестановкой всех букв слова КОЛОКОЛ?

Введите число.