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

Дарья составляет 6-буквенные слова перестановкой букв слова ВЕРСИЯ. При этом в слове не могут стоять рядом две согласные буквы, а буква Я не может стоять на втором или четвертом месте. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько слов может составить Дарья?

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

У нас в распоряжении 3 гласные и 3 согласные буквы. Для начала составим варианты расстановки согласных букв так, чтобы они не стояли рядом:

1) С*С*С*

2) С*С**С

3) С**С*С

4) *С*С*С

На место согласной буквы можно поставить любую из 3, потом любую из 2, и наконец 1 оставшуются. Тогда расставить можно 3⋅2 ⋅1 = 6  вариантов согласных букв.

Теперь проанализируем гласные буквы, которые должны стоять на местах звёздочки.

В первом варианте буква Я не может стоять на 2 местах, а значит стоит на последнем. Тогда на двух оставшихся местах будет 2 ⋅1 = 2  варианта расстановки гласных. Тогда общее количество слов в первом варианте равно 6 ⋅2 = 12  .

Во втором варианте буква Я также не может стоять на 2 местах, и стоит на предпоследнем. По аналогии, количество вариантов равно 6⋅2 = 12  .

В третьем варианте буква Я не может стоять только на 2 месте, так что на 2 месте стоит одна из двух гласных, на третьем – одна из двух оставшихся и на пятом – оставшаяся гласная. Тогда общее количество вариантов расстановки гласных равно 2⋅2 ⋅1 = 4  , откуда общее количество вариантов равно 6 ⋅4 = 24  .

И наконец, для 4 варианта буква Я может стоять на любой месте. Тогда расставить можно 3 ⋅2⋅1 = 6  вариантов гласных букв. В итоге для 4 варианта будет 6⋅6 = 36  способов расстановки.

Просуммировав все варианты, получим 12 + 12+ 24+ 36 = 84  , после чего запишем ответ.

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

a = ’ВЕРСИЯ’
a1 = ’ВЕРСИ’
sogl = ’ВРС’ # согласные буквы слова
m = [x1+x2 for x1 in sogl for x2 in sogl] # пары согласных букв
count = set()

for x1 in a:
    for x2 in a1:
        for x3 in a:
            for x4 in a1:
                for x5 in a:
                    for x6 in a:
                        s = x1+x2+x3+x4+x5+x6
                        # проверка, что все буквы различные и при этом в слове нет рядом стоящих согласных букв
                        if len(set(s)) == len(s) and all(i not in s for i in m):
                            count.add(s)
print(len(count))

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

from itertools import permutations
count = 0
for x in permutations(’ВЕРСИЯ’):
    s = ’’.join(x)
    if s[1] != ’Я’ and s[3] != ’Я’ and (’ВР’ not in s) and (’РВ’ not in s) and (’ВС’ not in s) and (’СВ’ not in s) and (’СР’ not in s) and (’РС’ not in s):
        count += 1
print(count)

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