Присоединиться

11 класс·средний уровень

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

Условие

Исполнитель преобразует число на экране. У исполнителя есть три команды, которым присвоены номера:1. Прибавить 1.2. Прибавить 2.3. Умножить на 2.Первая команда увеличивает число на экране на 1, вторая увеличивает его на 2, третья умножает на 2.Программа для исполнителя — это последовательность команд. Сколько существует программ, которые преобразуют исходное число 1 в число 11 и при этом не содержат двух команд умножения подряд?

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Решение. Решим задачу с помощью языка программирования PascalABC. Напишем рекурсивную функцию, подсчитывающую необходимое количество программ. Учтём, что в программе не должно повторяться две команды умножения подряд. Для этого введём булевую переменную multiplied. Приведём код решения:function F(x, y: integer; multiplied: boolean): integer; begin if x = y then F := 1 else if x > y then F := 0 else if multiplied = False then F := F(x + 1, y, False) + F(x + 2, y, False) + F(x * 2, y, True) else if multiplied = True then F := F(x + 1, y, False) + F(x + 2, y, False); end;begin writeln(F(1, 11, False));end.Таким образом, количество программ, удовлетворяющих условию задачи и выведенное на экран, равно

Осталось ещё 1 шаг

  1. Приведём решение на языке Python.def f(x, y…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Оператор присваивания и ветвления. Перебор вариантов»