ЕГЭ Информатика 2024: Задача 8 — решение на Python

Задание базового уровня, проверяющее понимание основных понятий и методов измерения количества информации. На его выполнение отводится 4 минуты.

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

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

Решение на языке Python

Для решения задачи удобно использовать модуль itertools в Python, а именно функцию product.

Генерация восьмеричных пятизначных чисел

import itertools

digits = '0234567'  # Цифры восьмеричной системы без 1
kol = list(itertools.product(digits, repeat=5)) # Генерация всех возможных комбинаций
num = ["".join(k) for k in kol] # Преобразование кортежей в строки

Функция product генерирует все возможные пятизначные комбинации из заданного набора цифр. Список num содержит все сгенерированные числа в виде строк.

Проверка условий

Проверим каждое число на соответствие условиям задачи:

  1. Отсутствие цифры 1: ‘1’ not in s
  2. Все цифры различны: len(set(s)) == 5 (Функция set удаляет дубликаты. Если длина множества равна 5, все цифры различны.)
  3. Разная четность соседних цифр: all(int(s[i]) % 2 != int(s[i+1]) % 2 for i in range(len(s)-1)) (Функция all возвращает True, если условие выполняется для всех элементов.)
  4. Число не начинается с нуля: s[0] != ‘0’

Подсчет подходящих чисел

count = 0
for s in num:
  if '1' not in s and len(set(s)) == 5 and s[0] != '0' and all(int(s[i]) % 2 != int(s[i+1]) % 2 for i in range(len(s)-1)):
    count += 1

print(count) # Вывод результата

Результат выполнения кода — количество восьмеричных пятизначных чисел, удовлетворяющих всем условиям задачи. Правильный ответ: 180.

Что будем искать? Например,программа