8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Ира составляет пятизначные числа в девятеричной системе счисления. Сколько различных чисел, делящихся на 25 без остатка, может составить Ира?
Решение руками
Алфавит девятиричной системы счисления: 0, 1, 2, 3, 4, 5, 6, 7, 8.
Переведем первое пятизначное число из девятиричной системы счисления в десятичную:
Переведем последнее пятизначное число из девятиричной системы счисления в десятичную:
Все числа в десятичной системе счисления, которые больше 6561 и меньше 59048 в девятиричной системе счисления будут являться пятизначными.
Вспомним признак делимости на 25: число, составленное из двух последних цифр, делится на 25.
Первое кратное 25 число в десятичной системе счисления из нужного диапазона - 6575, последнее - 59025. Осталось
посчитать количество чисел между ними, кратных 25: (конечное - начальное).
Идея решения через циклы:
Мы формируем все возможные пятизначные числа в девятеричной системе счисления. Для этого используем 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))
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

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

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

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

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

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!