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

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

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

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

Задача 1#85066

Ира составляет пятизначные числа в девятеричной системе счисления. Сколько различных чисел, делящихся на 25 без остатка, может составить Ира?

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

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

Алфавит девятиричной системы счисления: 0, 1, 2, 3, 4, 5, 6, 7, 8.

Переведем первое пятизначное число из девятиричной системы счисления в десятичную: 10000 = 6561
     9      10

Переведем последнее пятизначное число из девятиричной системы счисления в десятичную: 888889 = 5904810

Все числа в десятичной системе счисления, которые больше 6561 и меньше 59048 в девятиричной системе счисления будут являться пятизначными.

Вспомним признак делимости на 25: число, составленное из двух последних цифр, делится на 25.

Первое кратное 25 число в десятичной системе счисления из нужного диапазона - 6575, последнее - 59025. Осталось посчитать количество чисел между ними, кратных 25: (конечное - начальное)∕25+ 1  .

(59025− 6575)∕25 + 1 = 2099

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

Мы формируем все возможные пятизначные числа в девятеричной системе счисления. Для этого используем 5 вложенных циклов for, каждый из которых перебирает символы от "0"до "8". Так как число не может начинаться с нуля, первый цикл перебирает только символы "1"–"8". На каждом уровне цикла формируется отдельная цифра числа, а сочетание этих цифр создаёт очередное пятизначное число. После генерации числа мы переводим его из девятеричной системы в десятичную с помощью int(s, 9) и проверяем делимость на 25. Если число делится на 25, добавляем его в множество count для исключения повторов. В конце выводим количество уникальных чисел, делящихся на 25.

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

# Алфавит для цифр девятеричной системы
a = "012345678"

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

# Генерация всех пятизначных чисел
for x1 in "12345678": # Первая цифра не может быть 0
    for x2 in a: # Вторая цифра
        for x3 in a: # Третья цифра
            for x4 in a: # Четвёртая цифра
                for x5 in a: # Пятая цифра
                    # Собираем число из выбранных цифр
                    s = x1 + x2 + x3 + x4 + x5
                    # Переводим число в десятичную систему и проверяем делимость на 25
                    if int(s, 9) % 25 == 0:
                        # Добавляем число в множество уникальных чисел
                        count.add(s)
# Выводим количество чисел, делящихся на 25
print(len(count))

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

Мы используем модуль itertools и функцию product для генерации всех комбинаций длины 5 из цифр девятеричной системы. Каждая комбинация возвращается в виде кортежа символов, который преобразуем в строку с помощью join. Проверяем, что число не начинается с нуля и делится на 25. Если условия выполняются, добавляем число в множество count. В конце выводим количество уникальных чисел.

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

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

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

# Генерация всех комбинаций длины 5 из цифр девятеричной системы
for x in product("012345678", repeat = 5):
    # Преобразуем кортеж символов в строку
    s = "".join(x)
    # Проверяем, что число не начинается с 0 и делится на 25
    if s[0] != "0" and int(s, 9) % 25 == 0:
        # Добавляем число в множество уникальных чисел
        count.add(s)
# Выводим количество чисел, делящихся на 25
print(len(count))

Ответ: 2099

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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