Питон. исполнитель “раздвоитель” преобразует натуральные числа. у него есть две команды: “вычесть 1” и “разделить на 2”, первая команда уменьшает число на 1, вторая команда уменьшает число в два раза, если оно чётное, иначе происходит ошибка. дано два натуральных числа a и b (a> b). напишите алгоритм для развоителя, который преобразует число a в число b и при этом содержит минимальное число команд. команды алгоритма нужно выводить по одной в строке, первая команда обозначается, как -1, вторая команда как : 2.

ludamishina26 ludamishina26    3   29.08.2019 09:50    176

Ответы
Maykshmidt Maykshmidt  06.10.2020 02:38
#Python 3.6.0

a, b = int(input()), int(input())
while a!=b:
  if (a//2>=b) and (a%2 == 0):
    print ('Разделить на 2')
    a//=2
  else:
    print ('Вычесть 1')
    a-=1
ПОКАЗАТЬ ОТВЕТЫ
suxelena suxelena  12.01.2024 10:10
Добрый день! Рад принять роль учителя и помочь вам разобраться с этой задачей.

Чтобы преобразовать число a в число b с минимальным числом команд, мы будем использовать следующий алгоритм:

1. Если число a равно числу b, значит не нужно делать никаких команд. Значит, ответом будет пустой список команд.

2. Если число a больше числа b, тогда воспользуемся командой "вычесть 1" (обозначается -1) для уменьшения числа a на 1. Затем повторяем шаг 1, чтобы проверить, стало ли число a равным числу b. Если нет, то продолжаем выполнять этот шаг.

3. Если число a меньше числа b, воспользуемся командой "разделить на 2" (обозначается : 2) для уменьшения числа a в два раза. Проверяем получившееся число a:

- Если число a равно числу b после деления, значит мы достигли желаемого результата. Завершаем алгоритм.

- Если число a стало нечетным после деления на 2, то это значит, что мы сделали недопустимую команду. В таком случае мы должны были использовать команду "вычесть 1" (обозначается -1) для уменьшения числа a до ближайшего четного числа. Применяем этот шаг и затем повторяем шаг 3.

4. Повторяем шаги 2 и 3, пока число a не станет равным числу b.

Ниже я представлю вам пример работы алгоритма на примере чисел a = 10 и b = 3:

1. Число a = 10 больше числа b = 3, поэтому вычитаем 1. Получаем a = 9.
2. Число a = 9 больше числа b = 3, поэтому вычитаем 1. Получаем a = 8.
3. Число a = 8 больше числа b = 3, поэтому делим на 2. Получаем a = 4.
4. Число a = 4 больше числа b = 3, поэтому делим на 2. Получаем a = 2.
5. Число a = 2 меньше числа b = 3, поэтому вычитаем 1. Получаем a = 1.
6. Число a = 1 меньше числа b = 3, поэтому делим на 2. Но число 1 нечетное, поэтому вычитаем 1. Получаем a = 0.
7. Число a = 0 равно числу b = 3. Мы достигли желаемого результата.

Полученный список команд: -1, -1, : 2, : 2, -1.

Я надеюсь, что объяснение было понятным и подробным. Если у вас остались какие-либо вопросы, не стесняйтесь задавать их!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика