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

Петя составляет четырехбуквенные слова из букв слова ПРОКРАСТИНАЦИЯ, при этом буква в полученном слове не должна встречаться больше раз, чем она встречается в исходном слове. Сколько слов он может составить, если они должны состоять из 4 букв, начинаться и оканчиваться гласной буквой, содержать сочетание АР и не содержать сочетание АС?

Примечание: следует считать, что повторяющиеся буквы ничем друг от друга не отличаются.

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

ans = set()
word = ’ПРОКРАСТИНАЦИЯ’
# Убираем повторяющиеся буквы для корректного перебора
alf = set(’ПРОКРАСТИНАЦИЯ’)

for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            for x4 in alf:
                w = x1 + x2 + x3 + x4
                f = 1  # Переменная-флаг
                for i in w:
                    if not (w.count(i) <= word.count(i)):
                        # Если нашли несоответствие - делаем флаг равным 0
                        f = 0
                        break
                # Только если флаг остался единицей и соблюдены остальные условия
                if f and w[0] in ’ОАИЯ’ and w[-1] in ’ОАИЯ’ and ’АР’ in w and ’АС’ not in w:
                    ans.add(w)
print(len(ans))

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

from itertools import product

ans = set()
word = ’ПРОКРАСТИНАЦИЯ’
# Убираем повторяющиеся буквы для корректного перебора
alf = set(’ПРОКРАСТИНАЦИЯ’)

for w in product(alf, repeat=4):
    w = ’’.join(w)
    f = 1  # Переменная-флаг
    for i in w:
        if not (w.count(i) <= word.count(i)):
            # Если нашли несоответствие - делаем флаг равным 0
            f = 0
            break
    # Только если флаг остался единицей и соблюдены остальные условия
    if f and w[0] in ’ОАИЯ’ and w[-1] in ’ОАИЯ’ and ’АР’ in w and ’АС’ not in w:
        ans.add(w)

print(len(ans))

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