На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) в конец числа (справа) дописывается 1, если число единиц в двоичной записи числа чётно, и 0, если число единиц в двоичной записи числа нечётно;
б) к этой записи справа дописывается 1, если остаток от деления количества единиц на 2 равен 0, и 0, если остаток от деления количества единиц на 2 равен 1.
Полученная таким образом запись является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает 54 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе.
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
а) в конец числа (справа) дописывается 1, если число единиц в двоичной записи числа чётно, и 0, если число единиц в двоичной записи числа нечётно;
б) к этой записи справа дописывается 1, если остаток от деления количества единиц на 2 равен 0, и 0, если остаток от деления количества единиц на 2 равен 1.
Полученная таким образом запись является двоичной записью искомого числа R.
Укажите минимальное число R, которое превышает 54 и может являться результатом работы алгоритма. В ответе это число запишите в десятичной системе.
💡 Пошаговый разбор и решение:
Рассмотрим числа, большие, чем 54, и найдем минимальное число, которое является результатом работы алгоритма.
5510 = 1101112 — не может являться результатом работы алгоритма.
5610 = 1110002 — может являться результатом работы алгоритма.
Ответ: 56.
Приведём другое решение на языке Python.
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
if s.count('1') % 2 == 0:
s += '1'
else:
s += '0'
if s.count('1') % 2 == 0:
s += '1'
elif s.count('1') % 2 == 1:
s += '0'
r = int(s, 2) # перевод в десятичную систему
if r > 54:
print(r)
break
Приведём решение Лилии Салимуллиной на языке Python.
for n in range(1,100):
r = bin(n)[2:]
r = r + str(1 - r.count("1") % 2)
r = r + str(1 - r.count("1") % 2)
r = int(r,2)
if r > 54:
print(r)
break
5510 = 1101112 — не может являться результатом работы алгоритма.
5610 = 1110002 — может являться результатом работы алгоритма.
Ответ: 56.
Приведём другое решение на языке Python.
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
if s.count('1') % 2 == 0:
s += '1'
else:
s += '0'
if s.count('1') % 2 == 0:
s += '1'
elif s.count('1') % 2 == 1:
s += '0'
r = int(s, 2) # перевод в десятичную систему
if r > 54:
print(r)
break
Приведём решение Лилии Салимуллиной на языке Python.
for n in range(1,100):
r = bin(n)[2:]
r = r + str(1 - r.count("1") % 2)
r = r + str(1 - r.count("1") % 2)
r = int(r,2)
if r > 54:
print(r)
break
Правильный ответ:
56
📚 Похожие разобранные задания по предмету:
ID 140339 • Задание №3
Для какого целого числа X ЛОЖНО высказывание:
(X > 7) ИЛИ НЕ (X > 6)....
ID 33434 • Задание №21
Для игры, описанной в задании 19, найдите максимальное значение S, при котором у Вани есть стратегия, позволяю...
🔗 Другие задания линии №5 по предмету Информатика:
ID 29906
На вход алгоритма подается натуральное число N. Алгоритм строит по нему новое число R следующим...
ID 29907
Алгоритм получает на вход натуральное число N ≥ 100 и строит по нему новое число R следующим об...
ID 29908
Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом....
ID 29909
На вход алгоритма подаётся натуральное число $N больше 20$ Алгоритм строит по нему новое число ...
ID 29910
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим...