8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Марина составляет 5-буквенные слова, она может использовать все буквы из слова «ЗАПРЕТ». При этом каждая буква может встречаться любое количество раз либо не встречаться вовсе. Буква А может стоять только после согласной буквы (причём две буквы А стоять рядом не могут). Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько слов может составить Марина?
Сначала найдем слова в которых буквы А нет совсем: .
Теперь найдем все слова, в которых буква А встречается 1 раз, так как буква А может стоять только после согласной, то рассматривать будем сразу парой (* обозначает любую букву кроме А):
Эта пара может распологаться в слове в 4 местах: с 1 позиции, со 2, с 3 и с 4. Следовательно таких слов
.
Теперь найдем все слова в которых буква А встречается дважды, так как буква А может стоять только после согласной, то рассматривать будем сразу парами (* обозначает любую букву кроме А):
В таком случае существует всего 3 различных варианта перестановок пар (первый вариант указан выше):
Следовательно таких слов .
Большее число раз буква А встречаться не может. Тогда найдем сумму всех значений: .
Решение через циклы
Составляем программу для перебора всех возможных 5-буквенных слов из букв слова ЗАПРЕТ. Первая буква не может
быть А, потому что А должна идти только после согласной. Далее перебираем все варианты и проверяем
условия: запрещаем АА, чтобы буквы А не стояли подряд, и запрещаем ЕА, так как А не может идти
после гласной. Если условия выполнены, увеличиваем ответ. В итоге получаем количество допустимых
слов.
a = "ЗАПРЕТ" # допустимые буквы a1 = "ЗПРЕТ" # первой буквой не может быть А n = 0 # перебираем все 5-буквенные слова for x in a1: # задаём первую букву, это не А for y in a: # задаём остальные буквы for z in a: for w in a: for k in a: s = x + y + z + w + k # составляем слово # запрещаем "АА" и "ЕА" if not ("АА" in s) and not ("ЕА" in s): n += 1 print(n) # выводим ответ
Решение через itertools
С помощью product из модуля itertools перебираем все возможные 5-буквенные комбинации из букв слова ЗАПРЕТ.
Так как буква может встречаться несколько раз или не встречаться вовсе, product подходит идеально. Данная
функция перебирает все варианты с повторениями. Для каждой строки проверяем условия: первая буква не может
быть А, последовательности АА и ЕА не должны встречаться. Если условия выполнены, увеличиваем ответ. В итоге
получаем количество допустимых слов.
from itertools import product s = "ЗАПРЕТ" n = 0 # строим все 5-буквенные комбинации for x in product(s, repeat=5): word = "".join(x) # превращаем кортеж в строку # проверяем, что первая буква не "А", нет "АА" и нет "ЕА" if word[0] != "А" and not ("АА" in word) and not ("ЕА" in word): n += 1 # увеличиваем ответ print(n) # выводим ответ
Специальные программы

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

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

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

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

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

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