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

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

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

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

Задача 1#6226

Друг составляет пары чисел, используя цифры от 4 до 9. Оба числа состоят из 4 цифр. Каждая из цифр в первом числе может использоваться ровно 1 раз, а во втором любое количество раз, причём второе число не может начинаться с цифры 6, а первое с цифры 7. Сколько различных пар чисел друг может составить?

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

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

Представим, что первые числа — чашки, а вторые числа — блюдца. Сколько различных вариаций кружка+чашка можно составить?

Можно составить 300 ⋅ 1080 = 324000  различных пар чисел (блюдец с чашкой).
Решение программой (циклы):

ans = set()
alf = ’456789’

for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                w1 = x1 + x2 + x3 + x4
                if len(w1) == len(set(w1)):
                    for y1 in alf:
                        for y2 in alf:
                            for y3 in alf:
                                for y4 in alf:
                                    w2 = y1 + y2 + y3 + y4
                                    if w1[0] != ’7’ and w2[0] != ’6’:
                                        ans.add((w1, w2))
print(len(ans))

Решение программой (itertools):

from itertools import permutations, product

ans = set()
alf = ’456789’

for x in permutations(alf, 4):
    for y in product(alf, repeat=4):
        if x[0] != ’7’ and y[0] != ’6’:
            ans.add((x, y))

print(len(ans))

Ответ: 324000

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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