Автор: М. Ишимов
Уровень: Средний Сколько существует семнадцатеричных пятизначных чисел, не содержащих в своей записи более двух цифр 1, при этом никакая нечётная цифра не стоит рядом с цифрой 1? Данный способ позволяет перебрать алфавит и отсортировать его.
Автор: М. Ишимов
Уровень: Средний Сколько существует семнадцатеричных пятизначных чисел, не содержащих в своей записи более двух цифр 1, при этом никакая нечётная цифра не стоит рядом с цифрой 1? Данный способ позволяет перебрать алфавит и отсортировать его.
...Читать далее
Автор: М. Ишимов
Уровень: Средний
Условие задачи:
Сколько существует семнадцатеричных пятизначных чисел, не содержащих в своей записи более двух цифр 1, при этом никакая нечётная цифра не стоит рядом с цифрой 1?
Теоретическая справка:
Данный способ позволяет перебрать алфавит и отсортировать его.
Код решения:
Ответ: 1117608
Комментарии к коду:
- alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
Создается строка, содержащая цифры от 0 до 9 и заглавные буквы английского алфавита. Функция sorted сортирует символы в алфавитном порядке. - print(alphabet[3:17:2])
Выводится часть алфавита с индексами от 3 до 17 (не включая 17) с шагом 2. - from itertools import *
Импортируется модуль itertools, который предоставляет функции для работы с генерациями комбинаций. - cnt = 0
Создается переменная cnt, которая будет использоваться для подсчета подходящих комбинаций. - for s in product(alphabet[:17], repeat=5):
Используется функция product, которая генерирует все возможные комбинации длиной 5 из первых 17 символов алфавита (alphabet[:17]).
Каждая комбинация s представляет собой кортеж из 5 символов. - num = ''.join(s)
Кортеж символов s преобразуется в строку num с помощью метода join. - if num[0] != '0':
Проверяется, что первый символ строки не равен '0'. - if num.count('1') <= 2:
Проверяется, что символ '1' встречается в строке не более двух раз. - for a in alphabet[3:17:2]: // num = num.replace(a, '*')
Каждый символ из списка заменяется на '*' в строке. - if '1*' not in num and '*1' not in num and '11' not in num:
Проверяется, что в строке нет подстрок '1*', '*1' и '11'. - cnt += 1
Если все условия выполнены, счетчик увеличивается на 1. - print(cnt)
В конце программы выводится значение счетчика, которое равно количеству подходящих комбинаций.
Больше разборов на эту и другие задачи вы можете найти в нашем Телеграм канале: Информатика ЕГЭ | itpy 👨💻
Подписывайтесь на наш канал по теории Python: Азим вкатывается в IT | itpy 💻 Вы найдете тут много полезного!