Тема 23. Оператор присваивания и ветвления
23.06 Количество программ из A в B где траектория вычислений N команда
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела оператор присваивания и ветвления
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#57114

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

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

2. Прибавить 5.

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

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

Показать ответ и решение

Решение 1:

a = [[8, ’0’]]
for i in range(13):
    n = len(a)
    for j in range(n):
        l = a.pop(0)
        last_command = l[1]
        if last_command == ’0’:
            a.append([l[0] + 2, ’1’])
            a.append([l[0] + 5, ’2’])
            a.append([l[0] * 2, ’3’])
        elif last_command == ’1’:
            a.append([l[0] + 5, ’2’])
            a.append([l[0] * 2, ’3’])
        elif last_command == ’2’:
            a.append([l[0] + 2, ’1’])
            a.append([l[0] * 2, ’3’])
        else:
            a.append([l[0] + 2, ’1’])
            a.append([l[0] + 5, ’2’])
arr = set()
for i in range(len(a)):
    arr.add(a[i][0])
print(len(arr))

Решение 2:

s = set()
def f(a, k=0, r=0):
    if k == 13:
        s.add(a)
        return
    if r != 1:
        f(a + 2, k + 1, 1)
    if r != 2:
        f(a + 5, k + 1, 2)
    if r != 3:
        f(a * 2, k + 1, 3)

f(8)

print(len(s))

Ответ: 1043

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное обучение
в Школково

Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!