М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
aassdfgb
aassdfgb
07.10.2020 23:52 •  Информатика

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

👇
Ответ:
KirillK2014
KirillK2014
07.10.2020
#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
4,5(20 оценок)
Ответ:
ermoloffalexan
ermoloffalexan
07.10.2020
Добрый день! Рад принять роль учителя и помочь вам разобраться с этой задачей.

Чтобы преобразовать число 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.

Я надеюсь, что объяснение было понятным и подробным. Если у вас остались какие-либо вопросы, не стесняйтесь задавать их!
4,8(62 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ