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

Илья составляет слово из букв Р, А, С, Ч, Ё, С, К, А. Все буквы в слове могут повторяться неограниченное число раз. Слово может иметь длину от 3 до 6 букв (включительно).

Сколько слов может составить Илья?

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

Всего нам дано 8 букв, но буквы А и С повторяются дважды, они считаются одним и тем же символом, поэтому использовать мы можем всего 6 букв.

Подсчитаем трехбуквенные слова. На любой позиции может стоять одна из 6 букв, следовательно всего трехбуквенных слов: 6⋅6 ⋅6 = 216

Подсчитаем четырехбуквенные слова. На любой позиции может стоять одна из 6 букв, следовательно всего четырехбуквенных слов: 6 ⋅6⋅6⋅6 = 1296

Подсчитаем пятибуквенные слова. На любой позиции может стоять одна из 6 букв, следовательно всего пятибуквенных слов: 6 ⋅6⋅6⋅6 ⋅6 = 7776

Подсчитаем шестибуквенные слова. На любой позиции может стоять одна из 6 букв, следовательно всего шестибуквенных слов: 6 ⋅6⋅6⋅6 ⋅6⋅6 = 46656

Остается только просуммировать получившиеся значения: 216 + 1296 + 7776+ 46656 = 55944

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

s = ’РАСЧЁК’ #самое главное - записать алфавит РАСЧЁК, а не РАСЧЁСКА, т.к. в данном случае буквы А;С являются одним и тем же символом
s6 = s5 = s4 = s3 = 0
#слово из 6-ти букв
for z in s:
    for x in s:
        for c in s:
            for v in s:
                for b in s:
                    for m in s:
                        s6 += 1
#слово из 5-ти букв
for z in s:
    for x in s:
        for c in s:
            for v in s:
                for b in s:
                    s5 += 1
#слово из 4-х букв
for z in s:
    for x in s:
        for c in s:
            for v in s:
                s4 += 1
#слово из 3-х букв
for z in s:
    for x in s:
        for c in s:
            s3 += 1

print(s6+s5+s4+s3) #нам подходят все слова длиной от 3 до 6 включительно, значит, мы смело можем сложить все счётчики

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

from itertools import product

count = set()
for i in range(3,7):
    for x in product(’РАСЧЁСКА’,repeat = i):
        s = ’’.join(x)
        count.add(s)
print(len(count))

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