На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.
1) Строится двоичная запись числа N.
2) К этой записи дописываются ещё несколько разрядов по следующему правилу:
а) если сумма цифр в двоичной записи числа чётная, то к этой записи справа дописывается 0, а затем два левых разряда заменяются на 10;
б) если сумма цифр в двоичной записи числа нечётная, то к этой записи справа дописывается 1, а затем два левых разряда заменяются на 11.
3) Результат переводится в десятичную систему и выводится на экран.
Например, для исходного числа 6 = 1102 результатом является число 10002 = 8, а для исходного числа 4 = 1002 результатом является число 11012 = 13.
Укажите максимальное число N, после обработки которого с помощью этого алгоритма получается число R, меньшее, чем 35.
РешениеmaxN=0 # максимальное число
for N in range(1,100): # перебор возможных чисел
s=bin(N) # перевод числа в двоичную систему счисления
s=s[2:] # отрезание приставки '0b', указывающей на систему счисления
su=0 # обнуление суммы цифр
for i in s: #перебор цифр двоичной записи числа N
su+=int(i) # накопление суммы цифр
#выполнение условий получения двоичной записи числа R
s+='0'
s='10'+s[2:]
else:
s+='1'
s='11'+s[2:]
R=int(s,2) #перевод из двоичной записи в десятичную
if R<35:
maxN=N
print(maxN)
Комментариев нет:
Отправить комментарий