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

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

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

2.  Если в дво­ич­ной за­пи­си числа N нулей боль­ше, чем еди­ниц, то самый левый ноль за­ме­ня­ет­ся на еди­ни­цу. В про­тив­ном слу­чае самая пра­вая еди­ни­ца за­ме­ня­ет­ся на ноль.

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

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

 

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

1.  Стро­им дво­ич­ную за­пись числа N: 1710  =  100012.

2.  В по­лу­чен­ном дво­ич­ном числе нулей боль­ше, за­ме­ня­ем самый левый ноль: 10001 → 11001.

3.  Пе­ре­во­дим в де­ся­тич­ную си­сте­му: 110012  =  2510.

4.  Вы­чис­ля­ем мо­дуль раз­но­сти: |17 − 25|  =  8.

 

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

1.  Стро­им дво­ич­ную за­пись числа N: 2810  =  111002.

2.  В по­лу­чен­ном дво­ич­ном числе нулей не боль­ше, за­ме­ня­ем самую пра­вую

еди­ни­цу: 11100 → 11000.

3.  Пе­ре­во­дим в де­ся­тич­ную си­сте­му: 110002  =  2410.

4.  Вы­чис­ля­ем мо­дуль раз­но­сти: |28 − 24|  =  4.

 

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

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

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

Ре­ше­ние.

В ре­зуль­та­те ра­бо­ты ал­го­рит­ма мы по­лу­чим число от­ли­ча­ю­ще­е­ся от ис­ход­но­го одним битом (тем, что за­ме­нил ал­го­ритм). Сле­до­ва­тель­но, мо­дуль раз­ни­цы между ис­ход­ным и ко­неч­ным чис­лом будет пред­став­лять собой 2i, где i по­ряд­ко­вый номер заменённого бита. В при­ме­ре это числа 11000 и 11100, где за­ме­ни­ли 3 бит спра­ва (по­ряд­ко­вый номер 2), и мо­дуль раз­но­сти равен 22=4.

Так как мак­си­маль­ное число не пре­вы­ша­ет 109, в дво­ич­ной си­сте­ме оно не долж­но пре­вы­шать 230.

Так как R долж­но быть мак­си­маль­ным, а N ми­ни­маль­ным, сле­до­ва­тель­но, мы долж­ны за­ме­нить самый левый 0 на 1. Чтобы число R было мак­си­маль­ным, 0 дол­жен быть в самом боль­шом воз­мож­ном раз­ря­де и ко­ли­че­ство 0 в N долж­но пре­вы­шать ко­ли­че­ство 1. Тогда ми­ни­маль­ное N, не пре­вы­ша­ю­щее 230, будет 229 или 1 и 29 нулей.

229=536870912.

 

 

Ответ: 536870912