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

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

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

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

Задача 1#57868

Определите количество восьмизначных чисел, записанных в шестиричной системе счисления, в записи которых не более четырех цифр 2, а произведение суммы четных на сумму нечётных цифр числа больше 256.

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

Решение через циклы
Составим программу для перебора всех восьмизначных чисел. Для этого организуем 8 вложенных циклов, где каждый цикл отвечает за свою цифру числа. Первый цикл перебирает цифры от 1 до 5, чтобы число не начиналось с нуля, остальные – от 0 до 5. После формирования числа мы проверяем условия:

  1. В числе не более четырёх цифр 2 – проверяем через count.
  2. Вычисляем сумму чётных цифр и сумму нечётных цифр числа через списочное выражение с условием.
  3. Проверяем, что произведение суммы чётных на сумму нечётных цифр больше 256. Если все условия выполняются, увеличиваем счётчик ответа.
s = ’012345’  # все цифры шестеричной системы
k = 0  # счётчик подходящих чисел

# перебираем числа, задав каждую цифру
for a in ’12345’:  # первая цифра - не 0
    for b in s:
        for c in s:
            for d in s:
                for e in s:
                    for f in s:
                        for g in s:
                            for h in s:
                                n = a + b + c + d + e + f + g + h  # формируем число
                                sm0 = sum([int(i) for i in n if int(i) % 2 == 0])  # сумма чётных цифр
                                sm1 = sum([int(i) for i in n if int(i) % 2 == 1])  # сумма нечётных цифр
                                if n.count(’2’) <= 4 and sm0 * sm1 > 256:  # проверяем условия
                                    k += 1  # увеличиваем счётчик
print(k)  # выводим количество чисел

Решение через itertools
Для перебора всех восьмизначных чисел используем функцию product из модуля itertools, которая строит все последовательности длины 8 из цифр 0–5, где цифры могут повторяться или не встречаться вовсе. После формирования числа преобразуем кортеж в строку. Затем проверяем условия:

  1. Первая цифра не равна нулю, иначе число будет семизначным.
  2. В числе не более четырёх цифр 2 – проверяем через count.
  3. Вычисляем сумму чётных и сумму нечётных цифр с помощью генераторов. Проверяем, что произведение суммы чётных на сумму нечётных цифр больше 256.

Если все условия выполняются, добавляем число во множество count, после отработки цикла выводим длину count.

from itertools import product

count = set()  # множество для хранения подходящих чисел
chet = ’024’  # чётные цифры шестеричной системы
nechet = ’135’  # нечётные цифры шестеричной системы

for x in product(’012345’, repeat=8):  # перебираем все 8-значные комбинации
    s = ’’.join(x)  # формируем число
    if s[0] != ’0’ and s.count(’2’) <= 4:  # первая цифра не 0 и не более четырёх двоек
        sm_chet = sum(int(i) for i in s if int(i) % 2 == 0)  # сумма чётных цифр
        sm_nechet = sum(int(i) for i in s if int(i) % 2 != 0)  # сумма нечётных цифр
        if sm_chet * sm_nechet > 256:  # проверяем условие на произведение
            count.add(s)  # добавляем число в множество
print(len(count))  # выводим количество подходящих чисел

Ответ: 1470

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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