Автор: А.Вдовин
Уровень: Средней
Найдите количество четырехзначных чисел в девятеричной системе счисления, в которых есть ровна одна цифра 8, а сумма цифр слева от нее равна сумме цифр справа от нее.
Примечание: если слева или справа от 8 цифр нет, то сумма считается равной нулю
Аудио с пояснением к коду решения оставлю в комментариях.
from itertools import *
cnt = 0
for p in product('012345678', repeat=4):
num = ''.join(p)
if num[0] != '0':
if num.count('8') == 1:
i = num.index('8')
summa_left = sum(map(int, num[:i]))
summa_right = sum(map(int, num[i+1:]))
if summa_left == summa_right:
cnt += 1
print(cnt)
Ответ: 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) Вывод итогового количества подходящих чисел
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍5❤3❤🔥3