8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Из букв слова БЕЗУМСТВО составляются 9-буквенные последовательности. Сколько можно составить различных последовательностей таких, что каждая буква в них используется ровно один раз, они содержат сочетание букв БУМ и согласная не может стоять на первом и третьем месте?
Можно составить следующие комбинации слов с сочетанием букв БУМ:
2 * _ * _ * _ * 5 * 4 * 3 * 2 * 1 = 240
2 * 4 * 1 * _ * _ * _ * 3 * 2 * 1 = 48
2 * 4 * 1 * 3 * _ * _ * _ * 2 * 1 = 48
2 * 4 * 1 * 3 * 2 * _ * _ * _ * 1 = 48
2 * 4 * 1 * 3 * 2 * 1 * _ * _ * _ = 48
В начале всегда выбор из двух оставшихся букв. На втором месте 8-3(БУМ)-1 гласная на третьей позиции. На третьей позиции — оставшаяся гласная. Дальше сочетания оставшихся букв.
Решение программой (циклы):
Программа перебирает все 9-буквенные комбинации из букв слова БЕЗУМСТВО. Для первой и третьей позиций
выбираем только гласные, чтобы сразу исключить запрещённые варианты с согласными. На остальных позициях
перебираем буквы всего алфавита. Для каждой комбинации формируем слово, проверяем, что оно содержит подстроку
БУМ и все буквы различны (это удобно проверять через сравнение длины слова и множества его букв, если длины
совпадают, то в слове нет повторяющихся букв). Если оба условия выполняются, добавляем слово в множество ans,
чтобы исключить дубликаты. В конце выводим длину множества, что и будет количеством всех допустимых
последовательностей.
ans = set() # множество для хранения уникальных подходящих слов alf = "БЕЗУМСТВО" # допустимые буквы # Перебор всех возможных 9-буквенных комбинаций for x1 in "ЕУО": # на 1-й позиции только гласная for x2 in alf: for x3 in "ЕУО": # на 3-й позиции только гласная for x4 in alf: for x5 in alf: for x6 in alf: for x7 in alf: for x8 in alf: for x9 in alf: w = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 # формируем слово # Проверяем условия: # 1. В слове есть подстрока "БУМ" # 2. Все буквы используются ровно один раз (длина строки = длине множества) if "БУМ" in w and len(w) == len(set(w)): ans.add(w) # добавляем подходящее слово в множество print(len(ans)) # вывод результата
Решение программой (itertools):
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она генерирует все возможные
перестановки без повторений из букв слова БЕЗУМСТВО длиной 9, что идеально подходит, так как каждая буква
должна встречаться ровно один раз. В программе проверяем условия: слово должно содержать подстроку
БУМ, а также первая и третья позиции не могут содержать согласные. Если оба условия выполнены,
добавляем слово в множество. В конце выводим длину множества, что и будет количеством всех допустимых
слов.
from itertools import permutations ans = set() # множество для хранения уникальных подходящих слов alf = "БЕЗУМСТВО" # допустимые буквы # Перебор всех перестановок букв из 9-символьного алфавита for w in permutations(alf, 9): w = "".join(w) # формируем слово # Проверяем условия: # 1. В слове есть подстрока "БУМ" # 2. Первая буква не согласная # 3. Третья буква не согласная if "БУМ" in w and w[0] not in "БЗМСТВ" and w[2] not in "БЗМСТВ": ans.add(w) # добавляем подходящее слово в множество print(len(ans)) # вывод результата
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!