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

Сколько существует пятеричных пятизначных чисел, не содержащих в своей записи цифру 3, где никакие две чётные или две нечётные цифры не стоят рядом? Любую цифру можно использовать любое количество раз.

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

В 5-й системе счисления всего 5 цифр: 4, 3, 2, 1 и 0. По условию в числе не должно присутствовать цифры 3, поэтому алфавит сокращаетcя до 4, 2, 1, 0. Всего получилось три чётных цифры и одна нечётная.

Так как недопустимо ставить рядом две цифры одинаковой чётности, чётные и нечётные цифры должны чередоваться, таких вариантов всего два: Ч Н Ч Н Ч и Н Ч Н Ч Н.

Запишем эти же варианты, но с количеством цифр из алфавита, не забывая, что на первом месте в числе не может стоять ноль. Получим:

2⋅1 ⋅3⋅1⋅3 + 1⋅3⋅1 ⋅3⋅1 = 18 + 9 = 27

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

a = ’0124’ # исключаем 3, так как по условию она не должна быть в числе
count = set()

for x1 in ’124’: # число не может начинаться с 0
    for x2 in a:
        for x3 in a:
            for x4 in a:
                for x5 in a:
                    s = x1+x2+x3+x4+x5
                    # если в числе нет подряд идущих чётных или нечётных цифр
                    if all(int(s[i]) % 2 != int(s[i+1]) % 2 for i in range(len(s)-1)):
                        count.add(s)
print(len(count))

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

from itertools import product

cnt = 0
for i in product(’01234’, repeat=5):
    s = ’’.join(i)
    if not (’3’ in s) and s[0] != ’0’:
        s = s.replace(’0’, ’2’).replace(’4’, ’2’)
        if not(’22’ in s) and not(’11’ in s):
            cnt += 1

print(cnt)

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