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

Пашка составляет 5-буквенные слова из букв П, А, Р, Е, К. Каждую букву нужно использовать ровно 1 раз, при этом нельзя ставить подряд две гласные или две согласные. Сколько различных кодов может составить Пашка?

Решение руками

В предложенном алфавите согласных букв больше чем гласных, при этом они должны чередоваться между собой. Значит, слово не может начинаться с гласной. Получаем, что набор букв должен выглядеть как «СГСГС», где С — согласная, а Г — гласная.

Так как каждая буква должна появляться в слове только 1 раз, получаем число возможных вариантов: 3 ⋅2⋅2⋅1 ⋅1 = 12.

 

Решение через циклы

s1 = ’ПРК’
s2 = ’АЕ’
cnt = 0
# слово, удовлетворяющее условие может выглядеть только следующим образом: СГСГС, где С - согласная буква, а Г - гласная буква.
for i in s1:
    for j in s2:
        for k in s1:
            for l in s2:
                for m in s1:
                    t = [i, j, k, l, m]
                    tmp = set(t)
                    if len(tmp) == 5:
                        cnt += 1
print(cnt)

Решение через itertools

from itertools import permutations

count = set()

gl = ’АЕ’

for x in permutations(’ПАРЕК’):
    s = ’’.join(x)
    # проверка, что в слове нет подряд идуших гласных или согласных букв
    if all((s[i] in gl) != (s[i+1] in gl) for i in range(len(s)-1)):
        count.add(s)
print(len(count))

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