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

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

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

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

Задача 1#72398

Коля составляет шестибуквенные слова перестановкой букв слова ОТРАВА. Сколько всего различных слов может составить Коля?

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

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

На первое место мы можем поставить одну из 6 букв, на второе место - одну из 5 букв. С каждым последующим местом - количество доступных букв будет уменьшаться на 1.

В итоге: 6∗ 5∗4 ∗3 ∗2∗ 1 = 720  слов. Поскольку у нас в слове дважды встречается буква А, то нам нужно поделить полученное число на 2, для того чтобы не считать дважды одни и те же слова: 720
 2! = 360  .

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

Для решения задачи с помощью модуля itertools используем функцию permutations, которая генерирует все возможные перестановки элементов строки. В нашем случае элементы — буквы слова "ОТРАВА". Поскольку буква "А"повторяется дважды, нужно учитывать только уникальные перестановки, поэтому используем set, чтобы удалить дубликаты.

Алгоритм реализуется следующим образом:

1. Импортируем функцию permutations из модуля itertools.

2. Создаём счётчик c = 0 для подсчёта допустимых слов.

3. Перебираем все уникальные перестановки буквы слова "ОТРАВА": for x in set(permutations(’ОТРАВА’)).

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

5. Увеличиваем счётчик на 1 для каждой перестановки.

6. После завершения перебора выводим значение счётчика.

# Импортируем функцию permutations для генерации перестановок
from itertools import permutations

# Инициализируем счётчик допустимых слов
c = 0

# Перебираем все уникальные перестановки букв слова "ОТРАВА"
for x in set(permutations(’ОТРАВА’)):  # set() убирает дубликаты из-за повторяющейся буквы ’А’
    # Преобразуем кортеж букв в строку
    s = ’’.join(x)
    # Увеличиваем счётчик на 1 для каждой уникальной перестановки
    c += 1

# Выводим общее количество различных слов
print(c)

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

Для решения задачи через циклы будем формировать все шестибуквенные комбинации букв слова "ОТРАВА"с помощью 6 вложенных циклов. Каждое слово проверяется на выполнение условий: содержит ровно две буквы "А"и все остальные буквы различны (т.е. длина множества уникальных букв = 5).

Алгоритм реализуется следующим образом:

1. Создаём строку a = ’ОТРАВА’ с исходными буквами.

2. Создаём пустое множество c = set() для хранения всех допустимых слов.

3. Используем 6 вложенных циклов for x1 in a, ..., for x6 in a, чтобы выбрать буквы для каждой позиции слова.

4. Формируем строку слова: s = x1+x2+x3+x4+x5+x6.

5. Проверяем условия:

- len(set(s)) == 5 — все буквы кроме "А"различны.

- s.count(’А’) == 2 — в слове ровно две буквы "А".

6. Если условия выполняются, добавляем слово в множество c.

7. После перебора всех комбинаций выводим len(c) — количество допустимых слов.

# Исходные буквы слова "ОТРАВА"
a = ’ОТРАВА’

# Создаём множество для хранения всех допустимых слов
c = set()

# Перебираем все возможные комбинации букв на 6 позициях
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. Все буквы кроме повторяющейся уникальны (len(set(s)) == 5)
                        # 2. В слове ровно две буквы "А"
                        if len(set(s)) == 5 and s.count(’А’) == 2:
                            # Добавляем слово в множество
                            c.add(s)

# Выводим количество различных слов
print(len(c))

Ответ: 360

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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