Задание базового уровня, проверяющее понимание основных понятий и методов измерения количества информации. На его выполнение отводится 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’ not in s
- Все цифры различны: len(set(s)) == 5 (Функция set удаляет дубликаты. Если длина множества равна 5, все цифры различны.)
- Разная четность соседних цифр: all(int(s[i]) % 2 != int(s[i+1]) % 2 for i in range(len(s)-1)) (Функция all возвращает True, если условие выполняется для всех элементов.)
- Число не начинается с нуля: 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.