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

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

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

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

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

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

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