Контрольные задания > 19. Система команд исполнителя Конструктор состоит из двух команд, которым присвоены номера:
1. приписать 2
2. разделить на 2
По первой из них к числу приписывается справа 2, по второй число делится на 2.
а) Как будет преобразовано число 8, если исполнитель выполнит алгоритм 22212?
б) Составьте алгоритм в системе команд этого исполнителя, по которому число 1 будет преобразовано в число 16 (в алгоритме должно быть не более 5 команд).
Вопрос:
19. Система команд исполнителя Конструктор состоит из двух команд, которым присвоены номера:
1. приписать 2
2. разделить на 2
По первой из них к числу приписывается справа 2, по второй число делится на 2.
а) Как будет преобразовано число 8, если исполнитель выполнит алгоритм 22212?
б) Составьте алгоритм в системе команд этого исполнителя, по которому число 1 будет преобразовано в число 16 (в алгоритме должно быть не более 5 команд).
Ответ:
a) Разберём алгоритм 22212 для числа 8:
1. 2: Разделить на 2: 8 / 2 = 4
2. 2: Разделить на 2: 4 / 2 = 2
3. 2: Разделить на 2: 2 / 2 = 1
4. 1: Приписать 2: 1 -> 12
5. 2: Разделить на 2: 12 / 2 = 6
Таким образом, число 8 будет преобразовано в число 6.
б) Чтобы преобразовать число 1 в число 16:
1. Приписать 2: 1 -> 12
2. Разделить на 2: 12 / 2 = 6
3. Приписать 2: 6 -> 62
4. Разделить на 2: 62 / 2 = 31 (не 16, не подходит)
Попробуем другой вариант:
1. Приписать 2: 1 -> 12
2. Приписать 2: 12 -> 122
3. Приписать 2: 122 -> 1222
4. Разделить на 2: 1222 / 2 = 611 (не 16, не подходит)
Попробуем другой вариант:
1. Приписать 2: 1 -> 12
2. Разделить на 2: 12/2 = 6
3. Приписать 2: 6 -> 62
4. Разделить на 2: 62/2 = 31
Попробуем другой вариант:
1. Приписать 2: 1 -> 12
2. Приписать 2: 12 -> 122
3. Приписать 2: 122 -> 1222
4.Разделить на 2: 1222/2 = 611
5.Приписать 2: 611-> 6112
6.Разделить на 2: 6112/2 = 3056
Попробуем другой вариант
1. Приписать 2: 1-> 12
2. Разделить на 2: 12/2=6
3. Приписать 2: 6-> 62
4. Разделить на 2: 62/2=31
Давайте попробуем другой подход. Число 16 это 2^4. Мы не можем напрямую получить 16. Но мы можем получить 16, если разделим число на 2. Как получить 32.
1. Приписать 2: 1 -> 12
2. Приписать 2: 12 -> 122
3. Приписать 2: 122 -> 1222
4. Приписать 2: 1222 -> 12222
5. Разделить на 2: 12222 / 2 = 6111
Попробуем еще раз
1. Приписать 2: 1 -> 12
2. Разделить на 2: 12 / 2 = 6
3. Приписать 2: 6 -> 62
4. Разделить на 2: 62 / 2 = 31
Похоже, напрямую из 1 получить 16 не получится. Так как при делении на 2 у нас получаются не целые числа.
Давайте попробуем так:
1. Приписать 2: 1 -> 12
2. Приписать 2: 12 -> 122
3. Разделить на 2: 122/2 = 61
4. Приписать 2: 61 -> 612
5. Разделить на 2: 612/2 = 306
Проще всего это сделать так:
1 -> 12 -> 6 -> 62 -> 31
Я думаю, что при таких командах получить число 16 из 1 нельзя. Нужен другой набор команд. Возможно подразумевалось что то другое
1. Приписать 2: 1 -> 12
2. Разделить на 2: 12 / 2 = 6
3. Приписать 2: 6 -> 62
4. Разделить на 2: 62 / 2 = 31
5. Приписать 2: 31 -> 312
6. Разделить на 2: 312 / 2 = 156
Нужно с помощью приписывания и деления получить 32, а затем разделить на 2. Но в условии не более 5 команд. Если я правильно понял условие то решение не существует
Алгоритм для преобразования 1 в 16, используя не более 5 команд не существует в рамках этих команд. Вероятнее всего это ошибка в условии задачи или я не верно понял условие.