Найти в Дзене

Разбор номера 11616 #kege по информатике #ЕГЭ8

Автор: М. Ишимов
Уровень: Средний Сколько существует семнадцатеричных пятизначных чисел, не содержащих в своей записи более двух цифр 1, при этом никакая нечётная цифра не стоит рядом с цифрой 1? Данный способ позволяет перебрать алфавит и отсортировать его.
Оглавление

Автор: М. Ишимов
Уровень: Средний

Условие задачи:

Сколько существует семнадцатеричных пятизначных чисел, не содержащих в своей записи более двух цифр 1, при этом никакая нечётная цифра не стоит рядом с цифрой 1?

Теоретическая справка:

Данный способ позволяет перебрать алфавит и отсортировать его.

Код решения:

Ответ: 1117608
Ответ: 1117608

Комментарии к коду:

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