На вход алгоритма подаётся натуральное число N. Алгоритм строит...
Категория: Информатика и ИКТ | Добавлено: 06.09.2026
Задание:
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. К этой записи дописываются справа ещё два разряда по следующему правилу:
- складываются все цифры двоичной записи числа N, и остаток от деления суммы на 2 дописывается в конец числа (справа);
- над полученной записью производятся те же действия — справа дописывается остаток от деления суммы её цифр на 2.
Полученная таким образом запись является двоичной записью искомого числа R. Укажите наименьшее число N, для которого результат работы алгоритма больше числа 253. В ответе запишите это число в десятичной системе счисления.
Решение:
for n in range(1, 1000):
r = bin(n)[2:]
r += str(r.count('1') % 2)
r += str(r.count('1') % 2)
r = int(r, 2)
if r > 253:
print(n)
break
r = bin(n)[2:]
r += str(r.count('1') % 2)
r += str(r.count('1') % 2)
r = int(r, 2)
if r > 253:
print(n)
break
Алгоритм ищет наименьшее натуральное число N, для которого после преобразований получается число R > 253.
| Строка | Код | Что происходит |
|---|---|---|
| 1 | for n in range(1, 1000): |
Перебираем все N от 1 до 999 |
| 2 | r = bin(n)[2:] |
Переводим N в двоичную строку (без 0b) |
| 3 | r += str(r.count('1') % 2) |
Считаем единицы, дописываем остаток от деления на 2 (бит чётности) |
| 4 | r += str(r.count('1') % 2) |
Снова считаем единицы в новой строке и дописываем ещё один бит |
| 5 | r = int(r, 2) |
Переводим двоичную строку обратно в десятичное число |
| 6–8 | if r > 253: print(n); break |
Если R > 253 — выводим N и завершаем программу |
Ключевой нюанс: второй бит считается не по исходному числу, а по числу после первого добавления.
Ответ: 64