Автор: А.Вдовин
Уровень: Средней
Условие задачи:
Найдите количество четырехзначных чисел в девятеричной системе счисления, в которых есть ровна одна цифра 8, а сумма цифр слева от нее равна сумме цифр справа от нее.
Примечание: если слева или справа от 8 цифр нет, то сумма считается равной нулю
Код решения:
Ответ: 64
Комментарии к коду:
- from itertools import *
Импорт всех функций из модуля itertools, который предоставляет удобные инструменты для работы с итераторами - cnt = 0
Инициализация счётчика cnt, который будет хранить количество подходящих чисел - for p in product('012345678', repeat=4):
Цикл по всем возможным комбинациям длиной 4 из цифр '012345678' (включая повторы) - num = ''.join(p)
Преобразование текущей комбинации p в строку num - if num[0] != '0':
Проверка, что число не начинается с нуля (чтобы избежать ведущих нулей) - if num.count('8') == 1:
Проверка, что в числе ровно одна цифра '8' - i = num.index('8')
Нахождение индекса цифры '8' в строке num - summa_left = sum(map(int, num[:i]))
Вычисление суммы цифр слева от '8' (преобразование среза строки в числа и их суммирование) - summa_right = sum(map(int, num[i+1:]))
Вычисление суммы цифр справа от '8' - if summa_left == summa_right:
Проверка равенства сумм слева и справа от '8' - cnt += 1
Увеличение счётчика, если условие выполнено - print(cnt)
Вывод итогового количества подходящих чисел
Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨💻
Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻 Вы найдете тут много полезного!