На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. Далее эта запись обрабатывается по следующему правилу:
а) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10;
б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.
Полученная таким образом запись является двоичной записью искомого числа R.
Например, для исходного числа 610 = 1102 результатом является число 10002 = 810, а для исходного числа 410 = 1002 результатом является число 11012 = 1310.
Укажите минимальное число N, после обработки которого с помощью этого алгоритма получается число R, большее 40. В ответе запишите это число в десятичной системе счисления.
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))
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))
Правильный ответ:
16
📚 Похожие разобранные задания по предмету:
ID 34674 • Задание №27
Дана последовательность N целых положительных чисел. Необходимо определить количество пар элементов этой после...
ID 31837 • Задание №12
Символом F обозначено одно из указанных ниже логических выражений от трех аргументов: X, Y, Z.
Дан фрагмент та...
🔗 Другие задания линии №5 по предмету Информатика:
ID 29906
На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим...
ID 29907
Алгоритм получает на вход натуральное число N ≥ 100 и строит по нему новое число R следующим об...
ID 29908
Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом....
ID 29909
На вход алгоритма подаётся натуральное число $N больше 20$ Алгоритм строит по нему новое число ...
ID 29910
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим...