У исполнителя Квадратор две команды, которым присвоены номера:
1. возведи в квадрат
2. прибавь 2
Составьте алгоритм получения из числа 1 числа 85, содержащий не более 5 команд.
(В ответе запишите только номера команд без пробелов, запятых и иных символов.
1. Преобразование числа -4249 в двоичную систему:
- Если число отрицательное, то его дополнительный код можно получить следующим образом:
- Преобразуем абсолютное значение числа в двоичную систему;
- Инвертируем все биты полученного двоичного числа;
- Добавляем единицу к полученному инвертированному числу.
Для преобразования абсолютного значения числа 4249 в двоичную систему, следуем следующим шагам:
- Делаем деление на 2 и записываем остатки до тех пор, пока не получим ноль.
- Последовательность остатков, прочитанная в обратном порядке, будет представлять число в двоичной системе.
Деление 4249 на 2:
4249 / 2 = 2124 (остаток 1)
Деление 2124 на 2:
2124 / 2 = 1062 (остаток 0)
Деление 1062 на 2:
1062 / 2 = 531 (остаток 0)
Деление 531 на 2:
531 / 2 = 265 (остаток 1)
Деление 265 на 2:
265 / 2 = 132 (остаток 1)
Деление 132 на 2:
132 / 2 = 66 (остаток 0)
Деление 66 на 2:
66 / 2 = 33 (остаток 0)
Деление 33 на 2:
33 / 2 = 16 (остаток 1)
Деление 16 на 2:
16 / 2 = 8 (остаток 0)
Деление 8 на 2:
8 / 2 = 4 (остаток 0)
Деление 4 на 2:
4 / 2 = 2 (остаток 0)
Деление 2 на 2:
2 / 2 = 1 (остаток 0)
Деление 1 на 2:
1 / 2 = 0 (остаток 1)
Получаем двоичное представление числа 4249: 1000010011001.
2. Инвертирование всех битов полученного двоичного числа:
Инвертируем каждый бит числа 1000010011001 для получения -1000010011001.
3. Добавление единицы к полученному инвертированному числу:
Добавляем единицу к числу -1000010011001 и получаем -10000100110010.
4. Заполнение шестнадцатиразрядной ячейки памяти:
В шестнадцатиразрядной ячейке памяти может быть записано число от 0 до 65535 в двоичной системе.
Число -4249 в дополнительном коде не вмещается в одну ячейку памяти, так как требуется более 16 битов для его записи.
Если в данной задаче используется 16-битная ячейка памяти, то для записи числа -4249 будет необходимо использовать две ячейки памяти.
Первая ячейка будет содержать более старшие разряды числа, а вторая ячейка будет содержать более младшие разряды числа.
Общий процесс заполнения двух ячеек памяти:
- Заполняем первую ячейку памяти более старшими разрядами числа -1000010011001.
- Заполняем вторую ячейку памяти более младшими разрядами числа -1000010011001.
Запись числа -1000010011001 в первую ячейку памяти:
Первая ячейка памяти будет содержать разряды с 1 до 8 (считая справа налево) числа -1000010011001.
Запись числа -1000010011001 во вторую ячейку памяти:
Вторая ячейка памяти будет содержать разряды с 9 до 16 (считая справа налево) числа -1000010011001.
Таким образом, число -4249 в дополнительном коде будет записано в двух ячейках памяти следующим образом:
Первая ячейка: -10000100
Вторая ячейка: -11001001
Обратите внимание, что в шестнадцатиразрядной ячейке памяти записано количество битов, равное шестнадцати.
Так как f(n) всегда выводит 1 звёздочку, а если если n > 2 - то вызывает f(n - 1) и f(n - 2), то
*(n) = 1 при n <= 2
*(n) = 1 + *(n - 1) + *(n - 2) при n > 2.
*(1) = *(2) = 1
*(3) = 1 + *(2) + *(1) = 1 + 1 + 1 = 3
*(4) = 1 + *(3) + *(2) = 1 + 3 + 1 = 5
*(5) = 1 + 5 + 3 = 9
*(6) = 1 + 9 + 5 = 15
*(7) = 1 + 15 + 9 = 25
*(8) = 1 + 25 + 15 = 41
*(9) = 1 + 41 + 25 = 67
*(10) = 1 + 67 + 41 = 109
*(11) = 1 + 109 + 67 = 177
*(12) = 1 + 177 + 109 = 287
*(13) = 1 + 287 + 177 = 465
*(14) = 1 + 465 + 287 = 753
*(15) = 1 + 753 + 465 = 1219
*(16) = 1 + 1219 + 753 = 1973 >= 1500
ответ: 16.
Можно было заметить, что *(n) = 2F(n) - 1, где F(n) - число Фибоначчи, или просто выполнять программу для разных n.