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

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

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

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

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

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

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