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

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

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

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

Задача 1#6223

Друг составляет пятизначные числа, используя цифры от 0  до 9  включительно. Цифры в числе могут использоваться только один раз или не использоваться совсем. Число начинается с цифры 5  . Сколько различных чисел, имеющих ровно три подряд идущие четные цифры, друг может составить?

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

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

Первой цифрой числа является 5  , она нечётная. Значит либо на 2  , 3  и 4  месте в слове должны стоять чётные цифры, либо на 3  , 4  и 5  , всего 2  варианта. Изначально у нас есть 5  четных цифр, после того, как мы поставим любую из них, на второе место мы сможем поставить лишь одну из  4  оставшихся цифр,а на третье — одну из 3  оставшихся. В обоих случаях мы используем 4  цифры, тогда на последнее оставшееся место в числе можно поставить любую из 4  оставшихся нечетных цифр. Значит друг может составить 2 ⋅ 5 ⋅ 4 ⋅ 3 ⋅ 4 = 480  различных чисел.

Идея решения через циклы:

Перебираем все возможные 5-значные числа из цифр "0123456789"с помощью вложенных циклов. Каждая цифра может встречаться только один раз, поэтому проверяем уникальность через множество. Проверяем условие: число должно начинаться с цифры "5". Для каждой комбинации проверяем наличие ровно трёх подряд идущих чётных цифр: - Составляем список всех 3-значных комбинаций чётных цифр (done), хотя бы одна должна быть в числе. - Составляем список всех 4-значных комбинаций чётных цифр (lock), ни одна не должна быть в числе. Если оба условия выполнены, увеличиваем счётчик.

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

# Все цифры
a = "0123456789"

# Чётные цифры
chet = "02468"

# Список тройки чётных цифр (должен быть в числе)
done = [x1+x2+x3 for x1 in chet for x2 in chet for x3 in chet]

# Список четверки чётных цифр (не должен быть в числе)
lock = [x1+x2+x3+x4 for x1 in chet for x2 in chet for x3 in chet for x4 in chet]

# Счётчик подходящих чисел
count = 0

# Перебор всех 5-значных чисел
for x1 in a:
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in a:
                    # Формируем число
                    s = x1 + x2 + x3 + x4 + x5
                    # Проверка: начинается с "5" и все цифры уникальны
                    if s[0] == "5" and len(set(s)) == len(s):
                        # Проверка: есть тройка чётных цифр и нет четверки
                        if any(word in s for word in done) and all(word not in s for word in lock):
                            count += 1

# Вывод результата
print(count)

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

Используем функцию permutations для генерации всех 5-значных чисел без повторений. Для каждой перестановки проверяем: число начинается с "5"и содержит ровно тройку подряд идущих чётных цифр. - Проверка выполняется аналогично циклам через списки done и lock. Если условие выполнено, увеличиваем счётчик.

Решение кодом через itertools:

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

# Чётные цифры
chet = "02468"

# Тройки чётных цифр (должны быть)
done = [x1+x2+x3 for x1 in chet for x2 in chet for x3 in chet]

# Четверки чётных цифр (не должны быть)
lock = [x1+x2+x3+x4 for x1 in chet for x2 in chet for x3 in chet for x4 in chet]

# Счётчик чисел
count = 0

# Перебор всех перестановок 5 цифр
for x in permutations("0123456789", r=5):
    # Формируем число
    s = "".join(x)
    # Проверяем, что число начинается с "5"
    if s[0] == "5":
        # Проверяем условие: ровно 3 подряд идущие чётные
        if any(word in s for word in done) and all(word not in s for word in lock):
            count += 1

# Вывод результата
print(count)

Ответ: 480

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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