Решение: Рассмотрим первое попавшееся число, которое больше 170. 171=10101011. У этого числа отделим последние два разряда 171= 101010 | 11 не походит, т.к., выполняя второе правило, алгоритм сложит все единицы, которые стоят слева от вертикальной линии 1+1+1=3, а затем 3 разделим на 2 без остатка и получим 1 и запишем эту единица справа от числа 101010 1. Затем снова применим второе правило к получившемуся числу 101010 | 1. И получим уже новое число 101010 | 10. Получившееся число 10101010=170 по условию задачи должно быть равно 171. Понятно, что 171 не равно 170, поэтому число 171 не подходит. Берем число 172=10101100. Проверяем его на второе правило 2 раза и видим, что число 172 подходит. Осталось только число 10101100 без двух правых нулей перевести в десятичную систему счисления. Получаем 101011=43.
Ответ: 43.
Решение задачи cпособом программирования на языке Python:
for n in range (42,64):
r = list ( bin (n)[2:]) # преобразуем число сначала в двоичную систему счисления и потом переводим его список строк
for i in range(len(r)):
r[i] = int(r[i]) # преобразуем каждую строку (двоичная цифра) в целый тип данных
r += [sum(r)%2] # добавляем остаток от деления справа от числа
r += [sum(r) % 2] # добавляем остаток от деления справа от числа
for i in range(len(r)):
r[i] = str(r[i]) # обратный перевод в список строк
if int(''. join(r), 2) >170:# переводим в целочисленный тип и проверяем на условие задачи
print (n)
break
Ответ: 43.
Пример 5.2
На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются разряды по следующему правилу:
если два последних разряда одинаковые, дописывается 0, иначе дописывается 1.
3) К полученной записи дописывается еще один бит по правилу в пункте 2.
Полученная таким образом запись является двоичной записью искомого числа R.
Укажите минимальное число N, при вводе которого получится значение R больше, чем 61.
В ответе полученное число запишите в десятичной системе.
Решение:
Узнаем, какое число N может быть, чтобы в результате получилось 61.
61 = 111101
Убираем два младших разряда и исполняем алгоритм.
15=1111
-> (если два последних разряда одинаковые, то применяем первое правило) -> 11110
-> (два последних разряда разные) -> 111101
= 61.
Следовательно, из числа N = 15
получается R = 61
Значит, для того чтобы получить число большее 61, необходимо взять следующее N = 16.
Второй способ решения этой задачи заключается в том, что, как и в первой задаче, мы перебираем по порядку все числа большие 61. Числа 62, 63 под условие алгоритма не подходят, т.к. два последних разряда не соответствуют двум алгоритмам из условия, т.е., например, 62= 111110
, где, откидывая 2 последних разряда, получаем число 11111
и из данного мы не можем получить число 111110
, применив 2 алгоритма из условия. 64=1000000
под условие алгоритма походит, отбрасываем два правых разряда по условию задачи и получаем 10000
=16.
Ответ: 16.
Пример 5.3
Автомат получает на вход четырехзначное число. По этому числу строится новое число по следующим правилам.
1. Умножаются первая и вторая, а также третья и четвертая цифры исходного числа.
2. Полученные два числа записываются друг за другом в порядке возрастания (без разделителей).
Пример. Исходное число: 5431. Произведения: 5 * 4 = 20; 3 * 1 = 3. Результат: 320. Укажите максимальное число, в результате обработки которого автомат выдаст число 1216.
Решение:
Рассмотрим число 1216. Так как это два произведения двух одноразрядных чисел, имеем два числа 12 и 16.
12 = 2*6 = 3*4
16 = 2*8
Максимально возможная цифра в найденных произведениях – 8. Т.к. необходимо получить максимальное число по условию задачи, значит, максимальное искомое число начинается на 82. Для получения 12 используется максимальное число – 6. Следовательно, оставшиеся два разряда 62.
Ответ: 8262.
Пример 5.4