Форум » Динамическое программирование » Задача 5074 » Ответить

Задача 5074

source: Исполнитель Калькулятор преобразует число, записанное на экране. У исполнителя есть три команды, которым присвоены номера: 1. Прибавь 1 2. Прибавь 2 3. Умножь на 2 Первая команда увеличивает число на экране на 1, вторая увеличивает его на 2, третья – умножает на 2. Программа для исполнителя – это последовательность команд. Сколько существует программ, которые преобразуют исходное число 3 в число 79, и при этом траектория вычислений содержит число 11 и не содержит число 23. Также программа не должна содержать двух команд «Прибавь 1» подряд. Код setrecursionlimit(10000) from functools import * @lru_cache def f(s, e, k): if s > e or s == 23: return 0 if s == e: return 1 if s<e and k == '+1': return f(s + 2, e, '+2') + f(s * 2, e, '*2') if s<e and k != '+1': return f(s + 1, e, '+1') + f(s + 2, e, '+2') + f(s * 2, e, '*2') print(f(3,11,'') * f(11,79,'')) Подскажите в чем ошибка. Выдает неверный ответ Мой ответ: 1015273467 Ответ на задачу; 812266767

Ответов - 1

source: Спасибо. Проблема решена



полная версия страницы