504.py
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
Строится двоичная запись числа N.
К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2
дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток
от деления суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N)
является двоичной записью искомого числа R.
Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 12₁₀ = 1100₂ результатом является число 110000₂ = 48₁₀,
а для исходного числа 7₁₀ = 111₂ это число 11110₂ = 30₁₀.
Укажите такое наименьшее число N, для которого результат работы алгоритма больше числа 253.
"""
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
Строится двоичная запись числа N.
К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2
дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток
от деления суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N)
является двоичной записью искомого числа R.
Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 12₁₀ = 1100₂ результатом является число 110000₂ = 48₁₀,
а для исходного числа 7₁₀ = 111₂ это число 11110₂ = 30₁₀.
Укажите такое наименьшее число N, для которого результат работы алгоритма больше числа 253.
"""
for N in range(1, 1000):
binary = bin(N)[2:] # двоичная запись N
# Первое дописывание: остаток от суммы цифр на 2
s1 = binary.count("1")
binary = binary + str(s1 % 2) # остаток от суммы цифр на 2
# Второе дописывание: остаток от суммы цифр на 2
s2 = binary.count("1")
binary = binary + str(s2 % 2) # остаток от суммы цифр на 2
R = int(binary, 2) # переводим в десятичную систему
if R > 253:
print(N) # наименьшее N, для которого R > 253
break
"""
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
Строится двоичная запись числа N.
К этой записи дописываются справа ещё два разряда по следующему правилу:
а) складываются все цифры двоичной записи, и остаток от деления суммы на 2
дописывается в конец числа (справа). Например, запись 11100 преобразуется в запись 111001;
б) над этой записью производятся те же действия — справа дописывается остаток
от деления суммы цифр на 2.
Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N)
является двоичной записью искомого числа R.
Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 12₁₀ = 1100₂ результатом является число 110000₂ = 48₁₀,
а для исходного числа 7₁₀ = 111₂ это число 11110₂ = 30₁₀.
Укажите такое наименьшее число N, для которого результат работы алгоритма больше числа 253.
"""
for N in range(1, 1000):
binary = bin(N)[2:] # двоичная запись N
# Первое дописывание: остаток от суммы цифр на 2
s1 = binary.count("1")
binary = binary + str(s1 % 2) # остаток от суммы цифр на 2
# Второе дописывание: остаток от суммы цифр на 2
s2 = binary.count("1")
binary = binary + str(s2 % 2) # остаток от суммы цифр на 2
R = int(binary, 2) # переводим в десятичную систему
if R > 253:
print(N) # наименьшее N, для которого R > 253
break