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

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

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

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

Задача 1#59471

На Марсе нашли разумную жизнь. Пришельцы умеют читать и писать. Ученые выяснили, что в алфавите марсиан всего 7 букв, 4 из них согласные. Сколько может быть 4-х буквенных слов на Марсе, которые начинаются с согласной и при этом все буквы в слове различные.

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

Так как в алфавите всего 7 букв, при этом первая точно должна быть согласная, то на первом месте может быть только 4 варианта и буквы не могут повторяться, то далее идут просто оставшиеся буквы, то есть: 4⋅6 ⋅5⋅4 = 480  случаев.

Решение программой (циклы):
Составляем программу для перебора всех 4-буквенных слов из алфавита, в котором 7 букв, из которых 4 согласные. Так как конкретные буквы нам не важны, будем использовать русские: согласные – «БВГД», гласные – «АУО». Для каждого слова проверяем условия: все буквы должны быть различными – для этого используем множество и сравниваем длину слова с длиной множества (если их длина совпадает, в слове нет повторяющихся букв); также проверяем, что первая буква согласная, используя индексацию. Если оба условия выполняются, добавляем слово в множество, чтобы убрать дубликаты. В конце выводим длину множества, что и будет количеством допустимых слов.

ans = set()  # множество для хранения неповторяющихся подходящих слов
# Смоделируем марсианский алфавит, в котором 7 букв и 4 согласные
alf = "АУОБВГД"

# через циклы задаём каждую из 4-х букв
for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                w = x1 + x2 + x3 + x4  # составляем слово

                # проверяем, что все буквы различны и первая буква согласная
                if len(w) == len(set(w)) and w[0] in "БВГД":
                    ans.add(w)  # добавляем подходящее слово

print(len(ans))

Решение программой (itertools):
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она генерирует все возможные перестановки из 7 букв длиной 4, что удобно, так как все буквы должны быть различными. Условие про первую букву проверяем аналогично решению с циклами: с помощью индексации убеждаемся, что первая буква – согласная (Б, В, Г, Д). Если слово удовлетворяет всем условиям, добавляем его в множество, чтобы исключить дубликаты. В конце выводим длину множества, что и будет количеством допустимых слов.

from itertools import permutations

ans = set()  # множество для хранения неповторяющихся подходящих слов

# Смоделируем марсианский алфавит, в котором 7 букв и 4 согласные
alf = "АУОБВГД"

# перебираем все перестановки длины 4
for w in permutations(alf, 4):
    w = "".join(w)  # преобразуем кортеж в слово

    # проверяем, что первая буква согласная
    if w[0] in "БВГД":
        ans.add(w)  # добавляем подходящее слово

print(len(ans))

Ответ: 480

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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