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

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

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

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

Задача 1#85068

В классе занимаются 14 человек. Учитель каждый день выборочно проверяет домашнее задание и всегда опрашивает четное количество учащихся, при этом ситуация, когда никто не опрошен, невозможна. Сколькими различными способами учитель может провести опрос?

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

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

Возможны варианты опроса 2, 4, 6, 8, 10, 12 и 14 человек. Найдем по формуле сочетаний количество способов для каждого варианта:

2 ученика: --14!--= 13-⋅14-= 91
12!⋅2!    2

4 ученика: --14!--
10!⋅4! = 1001

6 учеников:  14!
6!⋅8! = 3003

8 учеников:  14!
-----= 3003
8!⋅6!

10 учеников: -14!--= 1001
4!⋅10!

12 учеников: -14!--
12!⋅2! = 91

14 учеников:  14!
------= 1
14!⋅0!

Всего возможных вариантов: 2 ⋅(91 + 1001 + 3003)+ 1 = 8191

Идея решения через itertools:

Мы используем функцию combinations из модуля itertools, чтобы сгенерировать все уникальные комбинации учащихся длиной 2, 4, 6, 8, 10, 12 и 14. Функция combinations автоматически учитывает, что порядок не важен (пары АБ и БА считаются одинаковыми). Каждая комбинация преобразуется в строку и добавляется в множество count для исключения дубликатов. После перебора всех комбинаций подсчитываем количество способов опроса.

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

# Импортируем функцию combinations из модуля itertools
from itertools import combinations

# Множество для хранения уникальных комбинаций
count = set()

# Перебор всех чётных размеров групп от 2 до 14 включительно
for i in range(2,15,2):
    # Генерация всех комбинаций длины i
    for x in combinations("ABCDEFGHIJKLMN", r = i):
        # Преобразуем кортеж в строку
        s = "".join(x)
        # Добавляем комбинацию в множество
        count.add(s)

# Выводим количество уникальных способов опроса
print(len(count))

Ответ: 8191

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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