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

Ал­го­ритм по­лу­ча­ет на вход на­ту­раль­ное число N > 1 и стро­ит по нему новое число R сле­ду­ю­щим об­ра­зом:

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

2.  Вы­чис­ля­ет­ся ко­ли­че­ство еди­ниц, сто­я­щих на чётных ме­стах в дво­ич­ной за­пи­си числа N без ве­ду­щих нулей, и ко­ли­че­ство нулей, сто­я­щих на нечётных ме­стах. Места от­счи­ты­ва­ют­ся слева на­пра­во (от стар­ших раз­ря­дов к млад­шим, на­чи­ная с еди­ни­цы).

3.  Ре­зуль­та­том ра­бо­ты ал­го­рит­ма ста­но­вит­ся мо­дуль раз­но­сти по­лу­чен­ных двух чисел.

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

1.  Стро­ит­ся дво­ич­ная за­пись: 3910  =  1001112.

2.  Вы­де­ля­ем еди­ни­цы на чётных и нули на нечётных ме­стах: 100111. На чётных ме­стах стоят две еди­ни­цы, на нечётных  — один ноль.

3.  Мо­дуль раз­но­сти равен 1.

Ре­зуль­тат ра­бо­ты ал­го­рит­ма R  =  1.

При каком наи­мень­шем N в ре­зуль­та­те ра­бо­ты ал­го­рит­ма по­лу­чит­ся R  =  4?

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

Ре­ше­ние.

За­ме­тим, что ис­ко­мое число в дво­ич­ной си­сте­ме счис­ле­ния на­чи­на­ет­ся с еди­ни­цы. По­сколь­ку счи­та­ет­ся ко­ли­че­ство еди­ниц на чётных ме­стах и ко­ли­че­ство нулей на нечётных ме­стах, а отсчёт но­ме­ра по­зи­ций ведётся слева на­пра­во, на­чи­ная с еди­ни­цы, ис­ко­мое число долж­но со­сто­ять толь­ко из еди­ниц. Сле­до­ва­тель­но, ис­ко­мое число  — 111111112  =  25510.

 

Ответ: 255.

 

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

for n in range(2, 10000):

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

sum_one = 0

sum_zero = 0

for i in range(len(s)):

if i % 2 != 0 and s[i] == "1":

sum_one += 1

elif i % 2 == 0 and s[i] == "0":

sum_zero += 1

if abs(sum_one - sum_zero) == 4:

print(n)

break


Аналоги к заданию № 46963: 47002 Все