Алгоритм получает на вход натуральное число N и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. Если сумма цифр десятичной записи заданного числа нечётна, то в конец двоичной записи
3−4. Пункт 2 повторяется для вновь полученных чисел ещё два раза.
5. Результатом работы алгоритма становится десятичная запись полученного числа R.
Пример. Дано число N = 17. Алгоритм работает следующим образом:
1. Строим двоичную запись: 1710 = 100012.
2. Сумма цифр числа 17 — чётная, дописываем к двоичной
3. Сумма цифр числа 34 — нечётная, дописываем к двоичной
4. Сумма цифр числа 69 — нечётная, дописываем к двоичной
5. Результат работы алгоритма R = 139.
Определите наименьшее возможное значение R > 2054, которое может получиться в результате работы алгоритма.
Приведём решение на языке Python.
def summa(n):
s = 0
while n > 0:
s += n%10
n = n//10
return (s)
for n in range (10000):
p = ''
for i in range (3):
if summa(n) % 2 == 0:
p = bin(n)[2:] + '0'
n = int(p,2)
else:
p = bin(n)[2:] + '1'
n = int(p,2)
r = int(p,2)
if r > 2054:
print (r)
break
Ответ: 2057.
Приведём решение Лилии Салимуллиновой на языке Python.
for n in range(1,300):
r = bin(n)[2:]
r = r+str(sum(map(int,str(int(r,2))))%2)
r = r+str(sum(map(int,str(int(r,2))))%2)
r = r+str(sum(map(int,str(int(r,2))))%2)
r = int(r,2)
if r > 2054:
print(r)
break

