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

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

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

2.  Далее эта за­пись об­ра­ба­ты­ва­ет­ся по сле­ду­ю­ще­му пра­ви­лу:

а)  если сумма цифр в дво­ич­ной за­пи­си числа чётная, то к этой за­пи­си спра­ва до­пи­сы­ва­ет­ся 0, а затем два левых раз­ря­да за­ме­ня­ют­ся на 10;

б)  если сумма цифр в дво­ич­ной за­пи­си числа нечётная, то к этой за­пи­си спра­ва до­пи­сы­ва­ет­ся 1, а затем два левых раз­ря­да за­ме­ня­ют­ся на 11.

По­лу­чен­ная таким об­ра­зом за­пись яв­ля­ет­ся дво­ич­ной за­пи­сью ис­ко­мо­го числа R.

На­при­мер, для ис­ход­но­го числа 610  =  1102 ре­зуль­та­том яв­ля­ет­ся число 10002  =  810, а для ис­ход­но­го числа 410  =  1002 ре­зуль­та­том яв­ля­ет­ся число 11012  =  1310.

Ука­жи­те ми­ни­маль­ное число N, после об­ра­бот­ки ко­то­ро­го с по­мо­щью этого ал­го­рит­ма по­лу­ча­ет­ся число R, боль­шее 40. В от­ве­те за­пи­ши­те это число в де­ся­тич­ной си­сте­ме счис­ле­ния.

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

Ре­ше­ние.

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

var

s: string;

i, min: integer;

num: real;

function CalculateNumber(n: integer): integer;

begin

s := '';

repeat

s := s + IntToStr(n mod 2);

n := n div 2;

until n = 0;

s := ReverseString(s);

if (s.CountOf('1') mod 2) = 0 then begin

Delete(s, 1, 2);

s := '10' + s + '0';

end

else begin

Delete(s, 1, 2);

s := '11' + s + '1';

end;

num := 0;

for i:integer := 1 to s.Length do begin

num := num + StrToInt(s[i]) * Power(2, s.Length - i);

end;

CalculateNumber := round(num);

end;

begin

for i := 1 to 100 do

if CalculateNumber(i) > 40 then begin

writeln(i);

break;

end;

end.

 

Ответ: 16.

 

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

a = []

for n in range(1, 100):

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

s = str(s)

if s.count('1') % 2 == 0:

s = "10" + s[2:] + '0'

else:

s = "11" + s[2:] + "1"

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

if r > 40:

a.append(n)

print(min(a))

Источник: Де­мон­стра­ци­он­ная вер­сия ЕГЭ−2023 по ин­фор­ма­ти­ке