Задача к ЕГЭ по информатике на тему «подсчет количества слов/чисел» №1

Лена составляет 6-буквенные коды. В кодах разрешается использовать только буквы Р,О,Я,Л,Ь, при этом код не может начинаться с гласной буквы и мягкого знака, а также не может содержать двух одинаковых букв подряд. Сколько различных кодов может составить Лена?

На первом месте может стоять только одна из двух букв — Р или Л

На втором месте может стоять одна из четырех букв без буквы Р или Л, так как код не содержит двух одинаковых букв подряд

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

Тогда количество последовательностей считается таким образом: 2 ⋅4⋅4⋅4 ⋅4⋅4 = 2048

Решение программой (циклы):

ans = set()
alf = ’РОЯЛЬ’

for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                for x5 in alf:
                    for x6 in alf:
                        w = x1 + x2 + x3 + x4 + x5 + x6
                        if w[0] not in ’ОЯЬ’:
                            f = 1  # Переменная флаг
                            for i in range(len(w) - 1):
                                if w[i] == w[i + 1]:
                                    # Если условие нарушается - флаг становится 0
                                    f = 0
                                    break
                            # Только если флаг остался единицей
                            if f:
                                ans.add(w)
print(len(ans))

Решение программой (itertools):

from itertools import product

ans = set()
alf = ’РОЯЛЬ’

for w in product(alf, repeat=6):
    w = ’’.join(w)
    if w[0] not in ’ОЯЬ’:
        f = 1  # Переменная флаг
        for i in range(len(w) - 1):
            if w[i] == w[i + 1]:
                # Если условие нарушается - флаг становится 0
                f = 0
                break
        # Только если флаг остался единицей
        if f:
            ans.add(w)
print(len(ans))

Ответ: 2048
Оцените статью
Я решу все!