8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Сколько различных восьмибуквенных кодовых слов можно составить из букв Ф,А,К,Е,Л, если в каждом из них буква Ф встречается не менее 3 раз?
Всего восьмибуквенных слов 5*5*5*5*5*5*5*5 = 390625. Легче будет сначала сосчитать слова, где буква Ф встречается менее 3 раз, а затем отнять полученное количество от общего числа.
1) Буква Ф не встречается
Значит, в наборе будет доступно 4 буквы, вычисляем: 4*4*4*4*4*4*4*4 = 65536.
2) Буква Ф встречается 1 раз
Позиций, которые может занять буква Ф — 8, вычисляем кол-во слов, где буква Ф находится на одной конкретной позиции, и умножаем на 8:
8*(1*4*4*4*4*4*4*4) = 131072.
3) Буква Ф встречается 2 раза
Считаем количество перестановок двух букв Ф: 8*7/2!=28
Кол-во перестановок умножаем на количество слов, где буква Ф встречается на двух конкретных позициях:
28*(1*1*4*4*4*4*4*4) = 114688.
Считаем, сколько слов существуем с тремя и более буквами Ф: 390625 - 65536 - 131072 - 114688 = 79329.
Решение через циклы
Составим программу для перебора всех 8-буквенных комбинаций из букв слова ФАКЕЛ с помощью вложенных циклов.
Для каждой комбинации формируем слово через конкатенацию букв и проверяем условие, что буква Ф встречается не
менее трёх раз, используя метод count. Если условие выполняется, увеличиваем счётчик допустимых слов. В конце
выводим значение счётчика, что и будет ответом.
s = "ФАКЕЛ" # доступные буквы k = 0 # счётчик допустимых слов # Перебор всех возможных 8-буквенных комбинаций for a in s: for b in s: for c in s: for d in s: for e in s: for f in s: for g in s: for h in s: w = a + b + c + d + e + f + g + h # формируем слово if w.count("Ф") >= 3: # проверяем условие k += 1 # если условия выполнены, увеличиваем счётчик print(k) # вывод результата
Решение через itertools
Для решения задачи с помощью модуля itertools воспользуемся функцией product. Она генерирует все возможные
комбинации с повторениями из букв ФАКЕЛ длиной 8. Именно это нам нужно, так как каждая буква может
встречаться произвольное количество раз (включая полное отсутствие). Условие «буква Ф встречается не менее трёх
раз» записывается в программе аналогично решению с помощью циклов. Если слово подходит, увеличиваем счётчик, в
конце выводим его.
from itertools import product s = "ФАКЕЛ" # исходный набор букв n = 0 # счётчик допустимых слов for x in product(s, repeat=8): w = "".join(x) # Преобразуем комбинацию в строку if w.count("Ф") >= 3: n += 1 print(n)
Специальные программы

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

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

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

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

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

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