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

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

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

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

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

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

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