Тема 8. Комбинаторика

8.02 Подсчет количества слов/чисел

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела комбинаторика
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#50788

Сколько различных шестибуквенных кодовых слов можно составить из букв У,С,П,Е,Х, если в каждом из них буква У встречается не менее 2 раз? Каждая из других допустимых букв может встречаться в кодовом слове любое количество раз или не встречаться совсем.

Показать ответ и решение

Всего существует − 56 = 15625  вариантов кодовых слов.

1. Найдем количество слов без буквы У, в таком случае у нас есть набор из четырех букв на шесть мест → 46 = 4096  .

2. Найдем количество слов с одной буквой У:

У * * * * * → на месте * может быть любая буква из набора С,П,Е,Х: → У 4 4 4 4 4 →  45 = 1024  варианта для случая, когда буква У стоит на первом месте. Она может стоять на любом из шести мест, следовательно, 1024 ⋅6  = 6144 слова с одной буквой У.

Так как нам нужно найти количество слов с двумя и более буквами У, то нам достаточно из всех вариантов вычесть слова без буквы У и слова с одной буквой У:

15625− 4096− 6144 = 5385  слов.

Решение программой (циклы):
Составим программу для перебора всех возможных 6-буквенных кодовых слов из букв У, С, П, Е, Х. Для этого организуем 6 вложенных циклов, по одному на каждую букву. Каждый цикл перебирает буквы из строки УСПЕХ, формируя все возможные комбинации.
После формирования каждого слова проверяем условие: буква У должна встречаться не менее двух раз. Если слово удовлетворяет условию, добавляем его в множество. После завершения циклов выводим длину множества, получая количество допустимых кодовых слов.

ans = set()  # множество для кодовых слов
alf = ’УСПЕХ’  # доступные буквы

# Перебор всех возможных 6-буквенных комбинаций
for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                for x5 in alf:
                    for x6 in alf:
                        w = x1 + x2 + x3 + x4 + x5 + x6  # составляем слово
                        # проверяем условие: буква У встречается не менее двух раз
                        if w.count(’У’) >= 2:
                            ans.add(w)  # добавляем слов в ответ
print(len(ans))  # выводим количество уникальных кодовых слов

Решение программой (itertools):
Для перебора всех возможных комбинаций символов используем функцию product из модуля itertools. Она формирует все последовательности указанной длины, позволяя включать буквы более одного раза или не включать вовсе.
Условие «буква У встречается не менее 2 раз» записывается в программе аналогично решению с помощью циклов.

from itertools import product

ans = set()  # множество для хранения уникальных подходящих слов
alf = ’УСПЕХ’  # допустимые буквы

# Генерируем все возможные 6-буквенные комбинации из букв
for w in product(alf, repeat=6):
    w = ’’.join(w)  # преобразуем кортеж в строку
    # проверяем условие: буква У встречается не менее двух раз
    if w.count(’У’) >= 2:
        ans.add(w)  # добавляем слов в ответ
print(len(ans))  # выводим количество уникальных кодовых слов

Ответ: 5385

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

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

Бесплатное онлайн-обучение

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

Налоговые вычеты

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

Специальное предложение
для учителей

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

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!