Разберём решение задач 8 задания ЕГЭ по информатике с использованием Python. Задания базового уровня, на решение каждого отводится 4 минуты. Они основаны на комбинаторике и проверяют знание основных понятий и методов подсчета количества информации. Python идеально подходит для решения подобных задач благодаря модулю itertools, предоставляющему эффективные инструменты для работы с итераторами. Будут использованы функции product (декартово произведение) и permutations (перестановки).
Задача 1: Четырёхбуквенные коды
Василий составляет четырёхбуквенные коды из букв ВОЯЮЩИЙ. Каждую букву можно использовать любое количество раз. Код не может начинаться с буквы И и должен содержать хотя бы одну гласную (А, Я, Ю, И). Сколько различных кодов может составить Василий?
from itertools import product
k = 0
for w in product('ВОЯЮЩИЙ', repeat=4):
if w[0] != 'И' and any(c in w for c in 'АЯЮИ'):
k += 1
print(k) # Ответ: 2004
Задача 2: Шестибуквенные коды
Василий составляет шестибуквенные коды из букв ПАЙЩИК. Каждую букву нужно использовать ровно один раз. Код не может начинаться с И и не может содержать сочетание ИА. Сколько различных кодов может составить Василий?
from itertools import permutations
k = 0
for w in permutations('ПАЙЩИК'):
word = ''.join(w)
if word[0] != 'И' and 'ИА' not in word:
k += 1
print(k) # Ответ: 504
Задача 3: Семибуквенные слова
Вася составляет слова из букв АРИДА. Код должен состоять из семи букв, и каждая буква должна встречаться столько же раз, сколько в слове АРИДА. В коде не должны стоять рядом две гласные и две согласные.
from itertools import permutations
s = set()
for w in permutations('АРИДАА'):
temp = ''
for i in w:
temp += 'Г' if i in 'АИ' else 'С'
if 'ГГ' not in temp and 'СС' not in temp:
s.add(''.join(w))
print(len(s)) # Ответ: 24
Задача 4: Шестибуквенные коды из «Варфоломей»
Варфоломей составляет шестибуквенные коды из букв слова ВАРФОЛОМЕЙ. Буквы в коде не должны повторяться, гласных должно быть больше, чем согласных.
from itertools import permutations
k = 0
for w in permutations('ВАРФОЛОМЕЙ', 6):
word = ''.join(w)
glasnye = sum(1 for c in word if c in 'АОЕ')
soglasnye = 6 - glasnye
if glasnye > soglasnye:
k += 1
print(k)
Задача 5: Код под номером 377
Маша составляет коды из букв МОДЕСТ. Каждая буква должна входить в код ровно один раз. Коды записаны в алфавитном порядке. Какой код будет записан под номером 377? (Нумерация с 1).
from itertools import permutations
codes = sorted(list(permutations('МОДЕСТ')))
print(codes[376]) # Ответ: ('Т', 'О', 'С', 'М', 'Д', 'Е') или 'ТОСМДЕ'
Задача 6: Последнее слово с нечётным номером
Все пятибуквенные слова из букв КМПЬЮТЕР записаны в алфавитном порядке и пронумерованы. Какой номер у последнего слова с нечётным номером?
from itertools import product, enumerate
for i, w in enumerate(sorted(product('КМПЬЮТЕР', repeat=5)), 1):
if i % 2 != 0 and len(w) == 5:
last_odd = i
print(last_odd)
Задача 7: Количество слов с чётными номерами
Сколько существует слов в списке (пять букв из КМПЬЮТЕР) с чётными номерами, которые не начинаются с М или И?
from itertools import product
k = 0
for i, w in enumerate(sorted(product('КМПЬЮТЕР', repeat=5)), 1):
if i % 2 == 0 and w[0] not in ('М', 'И') and len(w) == 5:
k += 1
print(k)
Задача 8: Семизначные числа
Определите количество семизначных чисел в десятичной системе счисления, которые начинаются с цифр 2 или 6 и не заканчиваются на пару одинаковых цифр.
from itertools import product
k = 0
for w in product('0123456789', repeat=7):
num = ''.join(w)
if num[0] in ('2', '6') and num[-2] != num[-1]:
k += 1
print(k)
Рассмотренные примеры демонстрируют эффективность использования модуля itertools в Python для решения комбинаторных задач. Понимание принципов работы функций product и permutations, а также умение обрабатывать результаты их работы, является ключевым для успешного решения подобных заданий на ЕГЭ по информатике. Не забывайте о важных деталях, таких как нумерация с нуля в Python и корректная обработка условий задачи.