8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Петя составляет шестибуквенные слова перестановкой букв слова УРШИКУ. При этом он избегает слов с двумя подряд одинаковыми буквами. Сколько всего различных слов может составить Петя?
Решение руками
Решим от обратного. Посчитаем всевозможные варианты и вычтем те варианты, которые нас не устраивают (в
которых буква "У"встречается подряд). Всего вариантов перестановок: . Делим на два, потому
что УУ - это один вариант написания, а подсчитано будет, как два разных. Теперь вычтем варианты, где встречается
"УУ"
У У
У
У
У
У
У
У
У
У
Значит, вариантов где встречается "УУ всего . Итого искомое кол-во слов равно 360 - 120 =
240.
Решение через циклы:
Для решения задачи через циклы мы будем поэтапно формировать все шестибуквенные слова из букв слова «УРШИКУ» и проверять их на выполнение двух условий: слово должно содержать ровно две буквы «У» и не должно иметь двух одинаковых букв подряд. Алгоритм реализуется следующим образом:
Сначала создаём строку a = ’УРШИКУ’, содержащую все буквы исходного слова. Создаём пустое множество count = set() для хранения уникальных слов, удовлетворяющих условиям.
Далее используем 6 вложенных циклов for, по одному на каждую букву слова:
1. for x1 in a — выбираем первую букву слова.
2. for x2 in a, ..., for x6 in a — перебираем все возможные варианты букв для остальных позиций слова.
Внутри циклов формируем строку s = x1+x2+x3+x4+x5+x6, которая представляет текущее слово.
Затем проверяем условия:
- s.count(’У’) == 2 — проверяем, что буква «У» встречается ровно дважды.
- len(set(s)) == 5 — проверяем, что все остальные буквы уникальны (так как всего 6 букв, а буква «У» встречается дважды, длина множества должна быть 5).
- ’УУ’ not in s — проверяем, что нет двух одинаковых букв «У» подряд.
Если слово удовлетворяет всем условиям, добавляем его в множество count.
После завершения перебора всех комбинаций выводим len(count) — количество допустимых слов.
# Исходный набор букв a = ’УРШИКУ’ # Создаём множество для хранения уникальных допустимых слов count = set() # Перебор первой буквы слова for x1 in a: # Перебор второй буквы слова 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 # Проверяем условия: # 1. Ровно две буквы "У" # 2. Все остальные буквы уникальны # 3. Нет "У" подряд if s.count(’У’) == 2 and len(set(s)) == 5 and ’УУ’ not in s: # Добавляем слово в множество count.add(s) # Выводим количество допустимых слов print(len(count))
Решение через itertools:
Для решения задачи с помощью модуля itertools используем функцию permutations, которая генерирует все возможные перестановки букв слова «УРШИКУ». Каждая перестановка формируется в виде кортежа, который преобразуем в строку с помощью ’’.join(x).
Условие «не должно быть двух одинаковых букв подряд» проверяем с помощью условия ’УУ’ not in s. Если оно выполняется, добавляем слово в множество count для исключения дубликатов.
В конце выводим len(count) — количество допустимых слов.
from itertools import permutations # Импортируем функцию для генерации перестановок # Множество для хранения допустимых слов count = set() # Перебираем все возможные перестановки букв исходного слова for x in permutations(’УРШИКУ’): # Преобразуем кортеж в строку s = ’’.join(x) # Проверяем условие: нет двух одинаковых букв "У" подряд if ’УУ’ not in s: # Добавляем слово в множество count.add(s) # Выводим количество допустимых слов print(len(count))
Специальные программы

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

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

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

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

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

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