Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа N.
2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления суммы
3. Предыдущий пункт повторяется для записи с добавленной цифрой.
4. Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число N = 13. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 1101.
2. Сумма цифр двоичной записи — 3, остаток от деления
3. Сумма цифр полученной записи — 4, остаток от деления
4. На экран выводится число 54.
Какое наименьшее число,
Рассмотрим числа,
94 = 10111102 — не является результатом работы алгоритма.
95 = 10111112 — не является результатом работы алгоритма.
96 = 11000002 — является результатом работы алгоритма для числа 110002.
Ответ: 96.
Приведём решение на языке Python.
def f(s):
summa = 0
for i in range(len(s)):
summa += int(s[i])
return summa
for n in range(1, 100):
s = bin(n)[2:] # перевод в двоичную систему
s = str(s)
summa = f(s)
s = s + str(summa % 2)
summa = f(s)
s = s + str(summa % 2)
r = int(s, 2) # перевод в десятичную систему
if r > 93:
print(r)
break
Приведём решение языке Python (Тагир Шигербаев, Новоузенск).
for n in range(1, 100):
s = bin(n)[2:]
if s.count('1') % 2 == 0:
s += '0'
else:
s += '1'
if s.count('1') % 2 == 0:
s += '0'
else:
s += '1'
r = int(s, 2)
if r > 93:
print(r)
break
Приведём решение Бориса Савельева языке Python.
a=[]
for n in range(1, 1000):
s = bin(n)[2:]
s=s + str(s.count('1') % 2)
s = s + str(s.count('1') % 2)
if int(s,2)>93:
a.append(int(s,2))
print(min(a))

