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

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

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

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

Задача 1#72427

Таня составляет 6-буквенные слова, в которых есть только буквы Д, Ы, Н, Я, причём буква Ы используется в каждом слове не более одного раза, а буква Д - не менее одного раза. Каждая из других допустимых букв может встречаться в слове любое количество раз или не встречаться совсем. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые может написать Таня?

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

Решение руками

1. Буква Ы не используется (0 раз) и буква Д есть в слове (исключаем слова без Д): 36 − 26 = 665  слов.

2. Буква Ы используется 1 раз и буква Д есть в слове (исключаем слова без Д):

Выбираем позицию для Ы: 6 вариантов. Остальные 5 позиций заполняем буквами Д, Н, Я, причем с хотя бы одной Д: 35 − 25 = 211  . Итого для варианта: 6 ∗211 = 1266  слов.

Общее количество слов: 665+ 1266 = 1931  слово.

Решение через itertools:

Для решения задачи с помощью модуля itertools мы будем формировать все возможные 6-буквенные слова из букв ’Д’, ’Ы’, ’Н’, ’Я’ с помощью функции product. Она создаёт декартово произведение, то есть все комбинации длины 6 из указанных букв.

После генерации каждой комбинации мы:

1. Преобразуем кортеж букв в строку с помощью ’’.join(x).

2. Проверяем, что буква ’Ы’ встречается не более одного раза: s.count(’Ы’) <= 1.

3. Проверяем, что буква ’Д’ встречается хотя бы один раз: s.count(’Д’) >= 1.

4. Если оба условия выполнены, увеличиваем счётчик c.

В конце выводим значение счётчика c, которое равно количеству допустимых слов.

from itertools import product  # Импортируем функцию product для генерации всех комбинаций
c = 0  # Создаём счётчик допустимых слов

# Перебор всех 6-буквенных комбинаций из букв ’ДЫНЯ’
for x in product(’ДЫНЯ’, repeat = 6):
    s = ’’.join(x)  # Преобразуем кортеж в строку слова
    # Проверяем условия: ’Ы’ не более одного раза и ’Д’ хотя бы один раз
    if s.count(’Ы’) <= 1 and s.count(’Д’) >= 1:
        c += 1  # Увеличиваем счётчик, если условия выполнены

print(c)  # Выводим количество допустимых слов

Решение через циклы:

В этом способе мы используем 6 вложенных циклов, по одному на каждую букву слова, чтобы перебрать все возможные комбинации букв ’Д’, ’Ы’, ’Н’, ’Я’.

После формирования слова из выбранных букв:

1. Склеиваем буквы в строку s = x1+x2+x3+x4+x5+x6.

2. Проверяем, что буква ’Ы’ встречается не более одного раза: s.count(’Ы’) <= 1.

3. Проверяем, что буква ’Д’ встречается хотя бы один раз: s.count(’Д’) >= 1.

4. Если условия выполняются, увеличиваем счётчик c.

В конце выводим значение счётчика c, которое показывает количество всех допустимых слов.

# Список допустимых букв
a = ’ДЫНЯ’
c = 0  # Счётчик допустимых слов

# Перебор всех возможных букв на каждой позиции слова
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
                        # Проверяем условия: ’Ы’ не более одного раза и ’Д’ хотя бы один раз
                        if s.count(’Ы’) <= 1 and s.count(’Д’) >= 1:
                            c += 1  # Увеличиваем счётчик, если условия выполнены

print(c)  # Выводим количество допустимых слов

Ответ: 1931

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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