8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Демид составляет пятибуквенные слова из букв КРОВАТЬ, содержащие букву Р, но не более четырех раз. Остальные буквы не могут повторяться. Сколько различных слов может составить Демид?
Решение руками
Допустим, что в слове 1 буква Р. Ее можно поставить на 5 позиций пятью способами. Способов расстановки
остальных букв по четырем позициям: . Итого получаем
слов.
Допустим, что в слове 2 буквы Р. Их можно поставить на 5 позиций способами. Способов расстановки
остальных букв по трем позициям:
. Итого получаем
слов.
Допустим, что в слове 3 буквы Р. Их можно поставить на 5 позиций способами. Способов расстановки
остальных букв по двум позициям:
. Итого получаем
слов.
Допустим, что в слове 4 буквы Р. Их можно поставить на 5 позиций способами. Способов расстановки
остальных букв на оставшуюся позицию:
. Итого получаем
слов.
Общее число слов:
Идея решения через циклы:
Мы формируем все возможные пятибуквенные слова из букв "КРОВАТЬ". Для этого используем пять вложенных циклов for, каждый из которых перебирает буквы алфавита. Каждая комбинация букв создаёт слово длиной 5 символов. После формирования слова проверяем два условия:
1. Буква "Р"встречается хотя бы один раз, но не более четырёх раз.
2. Все остальные буквы, кроме "Р не повторяются.
Если слово удовлетворяет обоим условиям, мы добавляем его в множество count для исключения дубликатов. В конце подсчитываем количество уникальных слов.
Решение через циклы:
# Алфавит букв для составления слов a = "КРОВАТЬ" # Множество для хранения уникальных слов count = set() # Генерация всех возможных пятибуквенных слов через вложенные циклы for x1 in a: # 1-я буква for x2 in a: # 2-я буква for x3 in a: # 3-я буква for x4 in a: # 4-я буква for x5 in a: # 5-я буква # Собираем слово из выбранных букв s = x1 + x2 + x3 + x4 + x5 # Проверяем количество букв "Р" в слове if 1 <= s.count("Р") <= 4: # Проверяем, что все остальные буквы не повторяются if all(s.count(i) == 1 for i in s if i != "Р"): # Добавляем слово в множество уникальных слов count.add(s) # Выводим количество уникальных слов print(len(count))
Идея решения через itertools:
Мы используем модуль itertools и функцию product для генерации всех комбинаций длины 5 из букв "КРОВАТЬ". Каждая комбинация возвращается в виде кортежа, который преобразуем в строку с помощью join. Далее проверяем, что слово содержит букву "Р"от одного до четырёх раз и что все остальные буквы не повторяются. Если оба условия выполняются, добавляем слово в множество count. После обработки всех комбинаций выводим количество уникальных слов.
Решение через itertools:
# Импортируем функцию product из модуля itertools from itertools import product # Множество для хранения уникальных слов count = set() # Генерация всех комбинаций длины 5 из букв "КРОВАТЬ" for x in product("КРОВАТЬ", repeat = 5): # Преобразуем кортеж в строку s = "".join(x) # Проверяем количество букв "Р" и отсутствие повторений у остальных букв if 1 <= s.count("Р") <= 4: if all(s.count(i) == 1 for i in s if i != "Р"): # Добавляем слово в множество уникальных слов count.add(s) # Выводим количество уникальных слов print(len(count))
Специальные программы

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

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

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

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

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

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