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

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

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

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

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

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

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