8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Азат составляет 5-буквенные слова из букв Д, Е, М, О, Н, причём если слово начинается на гласную, то оно обязательно должно оканчиваться на согласную. Все буквы используются ровно один раз. Сколько слов может составить Азат?
Решение аналитически:
Посчитаем сколько всего слов можно составить перестановкой букв из слова ДЕМОН. Количество перестановок
равно: . Теперь посчитаем количество слов, неподходящих по условию, то есть слово начинается и
заканчивается гласной:
. Теперь из общего количества вычтем количество неподходящих слов:
.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 5-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя
все возможные комбинации. Запишем количество подходящих слов.
ans = set() # Множество подходящих слов alf = "ДЕМОН" # Алфавит к задаче for x1 in alf: for x2 in alf: for x3 in alf: for x4 in alf: for x5 in alf: w = x1 + x2 + x3 + x4 + x5 # Формируем слово if len(w) == len(set(w)): # Если все буквы различные # Проверка по условию (первая буква Е или О и последняя буква Д или М или Н) или первая буква Д или М или Н if (x1 in "ЕО" and x5 in "ДМН") or x1 in "ДМН": ans.add(w) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она, переставляя буквы, генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import permutations ans = set() # Множество подходящих слов alf = "ДЕМОН" # Алфавит к задаче # Получим все 5-буквенные слова, перестановка букв означает, что ни одна из них не будет повторяться в пределах одного слова for x in permutations(alf, 5): # Проверка по условию (первая буква Е или О и последняя буква Д или М или Н) или первая буква Д или М или Н if (x[0] in "ЕО" and x[-1] in "ДМН") or x[0] in "ДМН": ans.add(x) # Добавляем слово в множество print(len(ans)) # Выводим нужное количество
Специальные программы

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

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

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

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

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

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