Формальное исполнение простого алгоритма, записанного на естественном языке, или умение создавать линейный алгоритм для формального исполнителя с ограниченным набором команд, или умение восстанавливать исходные данные линейного алгоритма по результатам его работы · 26 заданий
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1) Строится двоичная запись числа N. 2) Далее…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) Далее…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится двоичная запись числа N. 2) К это…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1) Строится двоичная запись числа N. 2) Кажды…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1) Строится двоичная запись числа N. 2) Кажды…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1) Из числа N вычитается остаток от деления N…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1) Из числа N вычитается остаток от деления N…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом: 1) Строится двоичная запись числа N. 2) Далее…
Анализ алгоритмов и исполнители
- Задание №5№5
Автомат получает на вход трёхзначное число. По этому числу строится новое число по следующим правилам: 1) Вычисляются суммы квадратов первой и второй,…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится четверичная запись числа N. 2) Да…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится четверичная запись числа N. 2) Да…
Анализ алгоритмов и исполнители
- Задание №5№5
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом. 1) Строится четверичная запись числа N. 2) Да…
Анализ алгоритмов и исполнители
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если число N делится на 3, то к этой записи дописываются три последние двоичные цифры;
б) если число N на 3 не делится, то остаток от деления умножается на 3, переводится в двоичную запись и дописывается в конец числа.
Полученная таким образом запись является двоичной записью искомого числа R.
3. Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 12 = 11002 результатом является число 11001002 = 100, а для исходного числа 4 = 1002 это число 100112 = 19.
Укажите минимальное число R, большее 151, которое может быть получено с помощью описанного алгоритма. В ответе запишите это число в десятичной системе счисления.
Правильный ответ
163
Пояснение
Решение:
Алгоритм дописывает к двоичной записи числа N либо два, либо три разряда. Если остаток от деления на 3 равен 1, приписывается 1⋅3=3=112 — два разряда, и тогда R=4N+3. Если остаток равен 2, приписывается 2⋅3=6=1102 — три разряда, и R=8N+6. Если же N кратно 3, приписываются три последние двоичные цифры самого N, то есть R=8N+(Nmod8).
Нам нужно наименьшее R>151. Заметим, что 151=100101112, а любое семиразрядное двоичное число не превосходит 127, поэтому у искомого R не меньше восьми разрядов; девятиразрядные числа не меньше 256, так что достаточно разобрать восьмиразрядные R.
- Остаток 1: дописываются два разряда, значит N шестиразрядное, 32≤N≤63, и R=4N+3. Из R>151 получаем N>37; ближайшее такое N с остатком 1 — это N=40, оно даёт R=163.
- Остаток 2: дописываются три разряда, значит N пятиразрядное, 16≤N≤31, и R=8N+6. Числа с остатком 2 дают N=17⇒R=142, N=20⇒R=166; первое подходящее значение — 166.
- N кратно 3 и пятиразрядное: N=18,21,24,27,30 дают соответственно R=146,173,192,219,246; первое подходящее — 173.
Наименьшее из чисел 163, 166 и 173 — это 163. Проверим: N=40=1010002, остаток от деления 40 на 3 равен 1, значит дописываем 3=112 и получаем 101000112=163.
Перебор подтверждает ответ:
def R(n):
b = bin(n)[2:]
if n % 3 == 0:
return int(b + b[-3:], 2) # дописали три последние цифры
return int(b + bin(n % 3 * 3)[2:], 2) # дописали остаток, умноженный на 3
print(min(R(n) for n in range(1, 1000) if R(n) > 151))
Ответ: 163