Уровень: Базовый
Условие задачи:
Определите количество 12-ричных пятизначных чисел, в записи которых ровно одна цифра 7 и не более трёх цифр с числовым значением, превышающим 8.
Теоретическая справка:
Базовая задачка с комбинаторикой цифр. Не забудьте, что в таких задачах необходимо проверять наличие 0 на первой позиции.
Код решения:
Комментарии к коду:
- from itertools import *
Импортируем все функции из модуля itertools, который содержит функции для работы с итерациями. - cnt = 0
Инициализируем переменную cnt, которая будет использоваться для подсчета валидных комбинаций. - for p in product('0123456789AB', repeat=5):
Генерируем декартово произведение символов '0123456789AB' длиной 5, создавая все возможные комбинации. - s = ''.join(p)
Преобразуем кортеж p (содержащий текущую комбинацию) в строку s. - if s[0] != '0' and s.count('7') == 1:
Проверяем, что первый символ строки не является '0' и что символ '7' встречается ровно один раз. - if len([x for x in s if x > '8']) <= 3:
Создаем список из символов строки s, которые больше '8', и проверяем, что таких символов не более трех. - cnt += 1
Увеличиваем счетчик cnt на 1, если предыдущие условия выполнены. - print(cnt)
Выводим общее количество валидных комбинаций, соответствующих заданным критериям.