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

Репозиторий на GitHub