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

Исполнитель Щелчок преобразует число на экране. У исполнителя есть три команды:

1. Прибавить 1

2. Умножить на 2

3. Прибавить 4

Программа для исполнителя — это последовательность команд.

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

Решение 1 (Рекурсия)

def f(st, count, end_count):
    global A # объявляем А глобальной переменной,
    # чтобы добавлять туда новые элементы внутри функции
    if count == end_count:
        A.add(st)
    else:
        f(st + 1, count + 1, end_count)
        f(st * 2, count + 1, end_count)
        f(st + 4, count + 1, end_count)
A = set() # Лучший вариант для данной задачи, так как в множестве
# не повторяются элементы
f(2, 0, 8)
print(len(A))

Решение 2 (Динамика)

from itertools import product
t = product([1,2,3], repeat = 8) # Получаем набор команд
c = set() # Множество результатов
for i in t: # Проходимся по всем наборам
    a = 2
    for j in i: # Проходимся по командам
        if j == 1:
            a += 1
        elif j == 2:
            a *= 2
        else:
            a += 4
    c.add(a) # Добавляем результат в множество
print(len(c)) # Выводим количество различных результатов

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