📋 Условие

ФИПИ заявляет восьмое задание в ЕГЭ как задачу на проверку знания основ комбинаторного счёта. Шаблон для её решения очень простой.

🔍 Подробное решение

Сколько слов длины 5, начинающихся с гласной буквы, можно составить из букв М, Е, C, Я, Ц? Каждая буква может входить в слово несколько раз.

Решение:

На первой позиции могут быть только гласные буквы (Е или Я) — 2 варианта.

На остальных 4 позициях может быть любая буква из набора М, Е, C, Я, Ц — 5 вариантов для каждой позиции.

Применяем правило произведения:

N = 2 × 5 × 5 × 5 × 5 = 2 × 625 = 1250

Ответ: 1250

📚 Теория

Комбинаторика. Перестановки, размещения, сочетания с повторениями и без.

🐍 Шаблон Python

Python
from itertools import *
# С повторениями
for i in product('123', repeat=3):
    x = ''.join(i)
# БЕЗ повторений
for i in permutations('123', r=3):
    x = ''.join(i)

# Проверки
if x[0] != '0':           # не начинается с 0
if x.count('1') == 4:     # ровно четыре 1
if x[0] != x[1] != x[2]:  # одинаковые не рядом
x = x.replace('2', '*')   # замена элементов
if x[0] <= x[1] <= x[2]:  # алфавитный порядок
if 'НН' not in s and 'ЧЧ' not in s:  # чередование

🐍 Альтернативный способ

Способ 2
from itertools import *
# 14-ричные, ровно 2 разные цифры, оканч. на 0 или 3
k = 0
for x in product('0123456789abcd', repeat=5):
    s = ''.join(x)
    if s[0] != '0' and len(set(s)) == 2 and s[-1] in '03':
        k += 1
print(k)

# 16-ричные, одна 9, чётные/нечётные не рядом
k = 0
for s in product('0123456789ABCDEF', repeat=4):
    s = ''.join(s)
    if s[0] != '0' and s.count('9') == 1:
        for el in '02468ACE':
            s = s.replace(el, 'Ч')
        for el in '13579BDF':
            s = s.replace(el, 'Н')
        if 'НН' not in s and 'ЧЧ' not in s:
            k += 1
print(k)

# Номер слова УСПЕХ
k = 0
for i in product(sorted('УСПЕХ'), repeat=5):
    x = ''.join(i)
    if x[-1] in 'СПХ':
        k += 1
        if x == 'УСПЕХ':
            print(k, x)