Задания
Версия для печати и копирования в MS Word
Тип 5 № 16809
i

Ав­то­мат об­ра­ба­ты­ва­ет на­ту­раль­ное число N (0 ≤ N ≤ 255) по сле­ду­ю­ще­му ал­го­рит­му.

1.  Стро­ит­ся вось­ми­бит­ная дво­ич­ная за­пись числа N.

2.  Все цифры дво­ич­ной за­пи­си за­ме­ня­ют­ся на про­ти­во­по­лож­ные (0 на 1, 1 на 0).

3.  По­лу­чен­ное число пе­ре­во­дит­ся в де­ся­тич­ную за­пись.

4.  Из но­во­го числа вы­чи­та­ет­ся ис­ход­ное, по­лу­чен­ная раз­ность вы­во­дит­ся на экран.

 

При­мер. Дано число N  =  13. Ал­го­ритм ра­бо­та­ет сле­ду­ю­щим об­ра­зом.

1.  Вось­ми­бит­ная дво­ич­ная за­пись числа N: 00001101.

2.  Все цифры за­ме­ня­ют­ся на про­ти­во­по­лож­ные, новая за­пись: 11110010.

3.  Де­ся­тич­ное зна­че­ние по­лу­чен­но­го числа 242.

4.  На экран вы­во­дит­ся число 242 − 13  =  229.

 

Какое число нужно вве­сти в ав­то­мат, чтобы в ре­зуль­та­те по­лу­чи­лось 133?

Спрятать решение

Ре­ше­ние.

За­ме­тим, что ин­вер­сия дво­ич­ной вось­ми­бит­ной за­пи­си числа в сумме с ис­ход­ным чис­лом дает 11111111, то есть 255. (В ис­ход­ном при­ме­ре: 00001101 + 11110010  =  11111111.) Сле­до­ва­тель­но, если ис­ход­ное число равно N, то ин­вер­ти­ро­ван­ное число равно 255 − N. Затем ав­то­мат осу­ществ­ля­ет вы­чи­та­ние, вы­чис­ляя 255 − 2N.

По­это­му, чтобы найти число, ко­то­рое нужно вве­сти в ав­то­мат для по­лу­че­ния 133, нужно ре­шить урав­не­ние 255 − 2N  =  133. Тем самым, ис­ко­мое число равно 61.

 

Ответ: 61.

 

При­ведём дру­гое ре­ше­ние на языке Python.

for n in range(256):

s = bin(n)[2:] # пе­ре­вод в дво­ич­ную си­сте­му

s = str(s)

if len(s) < 8:

s = '0' * (8 - len(s)) + s

s = s.replace('1', '*')

s = s.replace('0', '1')

s = s.replace('*', '0')

r = int(s, 2) # пе­ре­вод в де­ся­тич­ную си­сте­му

if r - n == 133:

print(n)

 

При­ведём ре­ше­ние Лилии Са­ли­мул­ли­ной на языке Python.

for n in range(0,256):

r = bin(n)[2:]

r = 11111111 - int(r)

r = int(str(r),2)

r = r - n

if r == 133:

print(n)

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

print(*[n for n in range(256) if (n^255) - n == 133])


Аналоги к заданию № 16809: 16882 28681 29113 Все

Раздел кодификатора ФИПИ: 1.6.3 По­стро­е­ние ал­го­рит­мов и прак­ти­че­ские вы­чис­ле­ния