Как правильно решить информатику У исполнителя Калькулятор - три команды, которым присвоены номера:
1. прибавь 1
2. сделай чётное
3. сделай нечётное
4. умножь на 10
Первая из них увеличивает на 1 число на экране, вторая умножает это число на 2, третья переводит число x в число 2x + 1, четвертая умножает на 10. Например, вторая команда переводит число 10 в число 20, а третья переводит число 10 в число 21. Программа для исполнителя – это последовательность команд.
Сколько существует программ, которые число 1 преобразуют в число 15?Иммерсивное средство чтения

27 Июл 2021 в 19:48
190 +1
1
Ответы
1

Для решения этой задачи можно воспользоваться методом динамического программирования.

Обозначим через dp[i] количество способов получить число i.

Инициализируем dp[1] = 1, так как из числа 1 можно получить только число 2 (выполнив команду "прибавь 1").

Далее перебираем все возможные числа j от 2 до 15 и для каждого числа j пересчитываем dp[j] следующим образом:

dp[j] = dp[j - 1] (увеличиваем на 1)если j четное, то dp[j] += dp[j / 2] (делаем четное)если j нечетное, то dp[j] += dp[(j - 1) / 2] (делаем нечетное)dp[j] += dp[j / 10] (умножаем на 10)

В итоге, после выполнения всех операций, dp[15] будет содержать количество всевозможных программ, которые преобразуют число 1 в число 15.

17 Апр в 13:58
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир