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

Школьник составляет 9-буквенные слова, в которых есть только буквы П, О, Ч, Е, М, У. Каждую букву можно использовать любое количество раз. При этом известно, что буква П встречается не более 6 раз. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько существует таких слов, которые школьник может написать?

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

Пусть буква П встречается более 6 раз, то есть 7, 8 или 9.

Число способов поставить букву П на 7 позиций из 9 равно: 9! ---= 36 2!7!  . Кроме буквы П в слове ПОЧЕМУ есть 5 букв. Тогда, число возможных слов в таком случае 36 ⋅5 ⋅5 = 900  .

Число способов поставить букву П на 8 позиций из 9 равно:  9! --- = 9 1!8!  . Кроме буквы П в слове ПОЧЕМУ есть 5 букв. Тогда, число возможных слов в таком случае 9⋅5 = 45  .

Число способов поставить букву П на 9 позиций из 9 равно 1 и всего есть одно слово со всеми буквами П.

Общее число слов, когда буква П встречается более 6 раз: 900+ 45 +1 = 946  .

Общее число слов, которые можно составить из букв слова ПОЧЕМУ:  9 6 = 10077696  .

Тогда число слов, где буква П используется не более 6 раз: 10077696− 946 = 10076750  .

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

count = 0 #счетчик
s = ’ПОЧЕМУ’ #данное слово
#вложенные циклы для перебора букв
for a in s:
    for b in s:
        for c in s:
            for d in s:
                for e in s:
                    for f in s:
                        for g in s:
                            for h in s:
                                for k in s:
                                    #формирование возможных вариантов слов
                                    st = a + b + c + d + e + f + g + h + k
                                    #проверка, что букв П не более 6
                                    if st.count(’П’) <= 6:
                                        count += 1
print(count)

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

from itertools import product

count = set()

for x in product(’ПОЧЕМУ’,repeat = 9):
    s = ’’.join(x)
    if s.count(’П’) <= 6:
        count.add(s)
print(len(count))

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