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

Лёша составляет слова(не обязательно осмысленные) из букв С, О, Т, К, А максимальной длины 5 и минимальной длины 3. Каждую букву можно использовать только один раз или не использовать совсем. Выписав все слова, Лёша позвал Руслана чтобы похвастаться. Узнав об этом, Руслан незамедлительно стёр треть всех слов, а потом половину от оставшихся. Сколько всего слов осталось после действий Руслана?

Сначала посчитаем сколько слов составил Лёша:

для слов длины 3: 5 * 4 * 3

для слов длины 4: 5 * 4 * 3 * 2

для слов длины 5: 5 * 4 * 3 * 2 * 1

Получается: 5*4*3 + 5*4*3*2 + 5*4*3*2*1 = 300.

Руслан стёр и получилось: (300 — 300/3)*(1/2) = 100.

Решение программой (циклы):

ans = set()
alf = ’СОТКА’

for x1 in alf:
    for x2 in alf:
        for x3 in alf:
            w = x1 + x2 + x3
            if len(w) == len(set(w)):
                ans.add(w)
            for x4 in alf:
                w = x1 + x2 + x3 + x4
                if len(w) == len(set(w)):
                    ans.add(w)
                for x5 in alf:
                    w = x1 + x2 + x3 + x4 + x5
                    if len(w) == len(set(w)):
                        ans.add(w)
# Умножение на 2/3 а потом на 1/2 даёт умножение на 1/3
print(len(ans) // 3)

Решение программой (itertools):

from itertools import permutations

ans = set()
alf = ’СОТКА’

for x in permutations(alf, 5):
    ans.add(x[:3])
    ans.add(x[:4])
    ans.add(x)

# Умножение на 2/3 а потом на 1/2 даёт умножение на 1/3
print(len(ans) // 3)

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