8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Кристина составляет 6-буквенные слова, она может использовать все буквы из слова «ВЪЕЗД». При этом каждая буква может встречаться любое количество раз либо не встречаться вовсе. Твердый знак может стоять только после согласной буквы (причём два твёрдых знака стоять рядом не могут). Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько слов может составить Кристина?
Решение аналитически:
Сначала найдем слова в которых твердого знака нет совсем: .
Теперь найдем все слова, в которых твердый знак встречается 1 раз, так как твердый знак может стоять только после согласной, то рассматривать будем сразу парой (* обозначает любую букву кроме Ъ):
Эта пара может распологаться в слове в 5 местах: с 1 позиции, со 2, с 3, с 4 и с 5. Следовательно таких слов
.
Теперь найдем все слова в которых твердый знак встречается дважды, так как твердый знак может стоять только после согласной, то рассматривать будем сразу парами (* обозначает любую букву кроме Ъ):
В таком случае существует всего 6 различных вариантов перестановок пар (первый вариант указан выше):
Следовательно таких слов .
Теперь найдем все слова в которых твердый знак встречается трижды, так как твердый знак может стоять только после согласной, то рассматривать будем сразу парами:
Следовательно таких слов .
Большее число раз твердый знак встречаться не может. Тогда найдем сумму всех значений:
.
Решение программой с помощью циклов:
Напишем программу для перебора всевозможных 6-буквенных слов из заданных букв. Для этого организуем
вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки,
формируя все возможные комбинации. Запишем количество подходящих слов.
a = "ВЪЕЗД" # Алфавит к задаче count = set() # Множество подходящих слов for x1 in "ВЕЗД": # Твердый знак не может стоять на первом месте for x2 in a: for x3 in a: for x4 in a: for x5 in a: for x6 in a: s = x1 + x2 + x3 + x4 + x5 + x6 # Формируем слово if "Ъ" in s: # Проверка всех сочетаний букв по условию if ("ВЪ" in s or "ЗЪ" in s or "ДЪ" in s) and "ЕЪ" not in s and "ЪЪ" not in s: count.add(s) else: # Если нет Ъ, значит и сочетания с ним проверять не надо count.add(s) print(len(count)) # Выведем нужную длину
Решение программой с помощью модуля itertools:
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные слова из заданного алфавита. Запишем количество подходящих слов.
from itertools import product count = set() # Множество подходящих слов # Получим все 6-буквенные слова из заданного алфавита for x in product("ВЪЕЗД", repeat = 6): s = "".join(x) # join объединяет буквы if "Ъ" in s and s[0] != "Ъ": # Если в слове Ъ стоит не на первом месте if ("ВЪ" in s or "ЗЪ" in s or "ДЪ" in s) and "ЕЪ" not in s and "ЪЪ" not in s: # Проверка по условию count.add(s) # Добавим в множество elif "Ъ" not in s: # Если нет Ъ, значит и сочетания с ним проверять не надо count.add(s) # Добавим в множество print(len(count)) # Выведем нужную длину
Специальные программы

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

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

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

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

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

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