ЕГЭ по информатике: Python решения задач №8

Разберём решение задач 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 и корректная обработка условий задачи.

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