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

Демид составляет пятибуквенные слова из букв КРОВАТЬ, содержащие букву Р, но не более четырех раз. Остальные буквы не могут повторяться. Сколько различных слов может составить Демид?

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

Допустим, что в слове 1 буква Р. Ее можно поставить на 5 позиций пятью способами. Способов расстановки остальных букв по четырем позициям: 6⋅5 ⋅4 ⋅3 = 360  . Итого получаем 360 ⋅5 = 1800  слов.

Допустим, что в слове 2 буквы Р. Их можно поставить на 5 позиций -5!--= 10 3!⋅2!  способами. Способов расстановки остальных букв по трем позициям: 6⋅5⋅4 = 120  . Итого получаем 120⋅10 = 1200  слов.

Допустим, что в слове 3 буквы Р. Их можно поставить на 5 позиций -5!--= 10 3!⋅2!  способами. Способов расстановки остальных букв по двум позициям: 6⋅5 = 30  . Итого получаем 30 ⋅10 = 300  слов.

Допустим, что в слове 4 буквы Р. Их можно поставить на 5 позиций -5!-- 4!⋅1! = 5  способами. Способов расстановки остальных букв на оставшуюся позицию: 6  . Итого получаем 5⋅6 = 30  слов.

Общее число слов: 1800+ 1200+ 300 +30 = 3330

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

a = ’КРОВАТЬ’

count = set()
for x1 in a:
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in a:
                    s = x1+x2+x3+x4+x5
                    # проверка, что Р встречается в слове, но не более 4 раз
                    if 1 <= s.count(’Р’) <= 4:
                        # проверка, что все остальные буквы, кроме Р, не повторяются в слове
                        if all(s.count(i) == 1 for i in s if i != ’Р’):
                            count.add(s)
print(len(count))

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

from itertools import product

count = set()

for x in product(’КРОВАТЬ’,repeat = 5):
    s = ’’.join(x)
    # проверка, что Р встречается в слове, но не более 4 раз
    if 1 <= s.count(’Р’) <= 4:
        # проверка, что все остальные буквы, кроме Р, не повторяются в слове
        if all(s.count(i) == 1 for i in s if i != ’Р’):
            count.add(s)
print(len(count))

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