К содержанию

Задание 8

Измерение количества информации

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

6 подтем · 56 задач + 5 дополнительных · базовый · ≈ 4 мин

Подтема 1 из 6

Слова и перебор

Что такое слово и алфавит, как считать слова умножением и сложением и как перебрать их программой.

Как устроена тема

В задании 8 из заданных букв составляют слова и спрашивают, сколько из них подходят под условие, — или какой номер у слова в списке по алфавиту. Вот задача, которую мы будем решать всю тему:

«Все пятибуквенные слова, составленные из букв Т, О, Р, К, А, записаны в алфавитном порядке и пронумерованы, начиная с 1. Сколько слов с нечётными номерами не начинаются с буквы А, содержат ровно две буквы О и не содержат двух букв О подряд?»

Каждое ограничение превращают в отдельное правило, а слова считают рассуждением или перебирают программой. Сначала разберём, что сказано в условии:

В условииЧто это значит
пятибуквенные слова из букв Т, О, Р, К, Ана каждом из пяти мест — любая из пяти букв, повторы можно
записаны в алфавитном порядке и пронумерованы с 1у каждого слова есть номер в общем списке
с нечётными номерамисмотрим только на слова 1, 3, 5, …
не начинаются с буквы Апервая буква — не А
ровно две буквы О, нет двух О подряддве О, и они не стоят рядом

Тема состоит из шести подтем — у каждой своя страница. Идём по ним по порядку:

  1. Слова и перебор — ты сейчас здесь.
  2. Сколько раз встречается буква — «ровно две О», «хотя бы одна», «не более».
  3. Соседние буквы — условия вида «нет двух О подряд».
  4. Числа в системе счисления — когда слово — это запись числа.
  5. Нумерованный список — номер слова по алфавиту и ответ задачи темы: 168.
  6. Когда перебор не успевает — дополнительный урок для очень длинных слов.

Каждый приём показан и рассуждением, и программой. На экзамене подойдёт любой способ, а второй пригодится для проверки.

Алфавит и слово

Слово здесь — любая последовательность букв, смысл не важен, а порядок важен. КОТ и ТОК — разные слова; ООАКР — тоже слово.

Набор разрешённых букв называют алфавитом. В задаче темы алфавит — пять букв Т, О, Р, К, А, длина слова — 5. Если не сказано иное, буквы могут повторяться.

«Из букв слова КОЛОС» значит алфавит из различных букв К, О, Л, С. А «переставить все буквы слова КОЛОС» — другое условие: каждую букву нужно использовать столько раз, сколько она встречается (подтема 2).

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

Число слов находят умножением: на каждом месте выбор разветвляется. Двухсимвольный код, где первый символ — А или Б, а второй — 0, 1 или 2, имеет 2 · 3 = 6 вариантов:

Из каждого первого символа выходят три ветви — по одной на второй символ. Каждому концу ветви соответствует свой код.

Пятибуквенных слов из Т, О, Р, К, А — 5 · 5 · 5 · 5 · 5 = 5⁵ = 3125. Ограничение на одно место меняет только его множитель: слов, которые не начинаются с А, 4 · 5⁴ = 2500.

Сложение и «или»

Непересекающиеся случаи складывают; если случаи пересекаются, общие слова вычитают один раз. Слов длины 2 или 3 из пяти букв — 5² + 5³ = 150: слово не может иметь сразу две длины.

А трёхбуквенных слов из АОБВГ, которые начинаются с А или заканчиваются на А, не 25 + 25: пять слов вида А?А попали в оба случая.

Клетка — первая и последняя буквы, в каждой 5 слов. Строка А и столбец А — по 25 слов, их пересечение входит в оба: 25 + 25 − 5 = 45.

Без повторений

Если буквы не повторяются, каждый следующий множитель на единицу меньше. Трёхбуквенных слов из пяти букв без повторений 5 · 4 · 3 = 60: какие бы буквы ни выбрали раньше, вариантов всегда на одну меньше.

Буквы, оставшиеся для второго и третьего места, разные, но их всегда четыре, а потом три.

Переставить все пять различных букв можно 5 · 4 · 3 · 2 · 1 = 120 способами. Такое произведение записывают как 5! («пять факториал»).

Перебор product

Программа перебирает те же позиции, что и рассуждение, и проверяет каждое слово. Двухсимвольный код из дерева выше перебирают двумя :

for first in 'АБ':    for second in '012':        print(first + second)
А0 А1 А2 Б0 Б1 Б2

Для пяти мест вместо пяти вложенных циклов берут функцию product из : product('АКОРТ', repeat=5) выдаёт все наборы из пяти букв по очереди. ''.join(letters) склеивает набор в строку, а счётчик растёт на каждом подходящем слове:

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

Программа дала то же 2500, что и умножение. Первая буква — word[0], последняя — word[-1].

Слова без повторений перебирает permutations из того же модуля:

from itertools import permutations print(len(list(permutations('АОБВГ', 3))))
60
Пары из букв А, О, Б. product берёт все 9 клеток, permutations убирает диагональ — повторы букв. Две правые сетки — выбор без учёта порядка; для слов они не подходят: АО и ОА — разные слова.
Тонкости:сколько успеет перебор

product из m букв длины n создаёт mⁿ вариантов. Сотни тысяч и миллионы проходят за секунды, а 8¹⁰ ≈ 10⁹ — уже слишком долго. Как считать такие задачи, разобрано в дополнительном уроке.

Итого

  • Словопоследовательность букв; порядок важен
  • Умножениеmⁿ слов длины n из m букв
  • Сложениенепересекающиеся случаи; общие вычесть один раз
  • Без повторов5 · 4 · 3; все n букв — n!
  • productперебор всех слов, проверка, счётчик

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

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

Вопрос 1
Почему пятибуквенных слов из АКОРТ 5⁵, а не 5 · 5 = 25?
ОтветСкрыть ответ
Ответ
Для каждого выбора первых букв есть все пять вариантов следующей, поэтому варианты умножаются на каждом из пяти мест: 5 · 5 · 5 · 5 · 5 = 3125.
Вопрос 2
Сколько трёхбуквенных слов из букв слова КОЛОС, если буквы могут повторяться?
ОтветСкрыть ответ
Ответ
64: различных букв четыре — К, О, Л, С, поэтому 4³ = 64.
Вопрос 3
Сколько пятибуквенных слов из АКОРТ не начинаются и не заканчиваются на А?
ОтветСкрыть ответ
Ответ
2000: 4 · 5 · 5 · 5 · 4.
Вопрос 4
Сколько слов длины 2 или 3 можно составить из букв АБВ?
ОтветСкрыть ответ
Ответ
36: двухбуквенных 3² = 9, трёхбуквенных 3³ = 27, случаи не пересекаются.
Вопрос 5
Сколькими способами можно переставить все буквы слова ПЛОТ?
ОтветСкрыть ответ
Ответ
24: 4 · 3 · 2 · 1 = 4!.

Практика

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

Буквы слова КОЛОС

Слова длины 3 составляются из букв слова КОЛОС, буквы могут повторяться. Сколько таких слов?

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

Слова из пяти букв длины 4

Сколько существует четырёхбуквенных слов из пяти различных букв, если повторения разрешены?

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

Начинается с А, кончается не на А

Алфавит — буквы А, Б, В, Г, Д. Сколько четырёхбуквенных слов начинается с А и заканчивается любой другой буквой? Повторения разрешены.

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

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

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

Слова длины от 1 до 3

Сколько существует слов длины от 1 до 3 из букв А, Б, В? Повторения разрешены.

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

Начинается с Б или кончается на О

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

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

Без повторений из шести букв

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

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

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

Сколько различных слов получается перестановкой всех букв слова ПЛОТ?

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

Маша составляет 6-буквенные коды из букв С, Л, И, В, А, Т. Каждую букву нужно использовать ровно один раз, при этом код не может начинаться с гласной и не может заканчиваться буквой Т. Сколько различных кодов может составить Маша?

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