Автомат обрабатывает натуральное число N по следующему алгоритму:
1. Строится двоичная запись числа N.
2. Складываются все цифры полученной двоичной записи. В конец записи (справа) дописывается остаток от деления полученной суммы на 2.
3. Предыдущий пункт повторяется для записи с добавленной цифрой.
4. Результат переводится в десятичную систему и выводится на экран.
Пример. Дано число N = 13. Алгоритм работает следующим образом:
1. Двоичная запись числа N: 1101.
2. Сумма цифр двоичной записи 3, остаток от деления на 2 равен 1, новая запись 11011.
3. Сумма цифр полученной записи 4, остаток от деления на 2 равен 0, новая запись 110110.
4. На экран выводится число 54.
Сколько различных чисел, принадлежащих отрезку [210; 260], могут появиться на экране в результате работы автомата?

Ответы

Ответ дал: vimmortal2
1

Программа:

Python:

from sys import maxsize

def toBin(n):

   N_bin = ''

   while n > 0:

       tmp = str(n % 2)

       N_bin = tmp + N_bin

       n = int(n / 2)

   return N_bin

def Operation(n):

   N = 0

   for i in str(n):

       N += int(i)

   N = str(n) + str(N % 2)

   return N

def toDec(n):

   lngth = len(n)

   numDec = 0

   for i in range(0, lngth):

       numDec += int(n[i]) * (2**(lngth - i - 1))

   return numDec

count = 0

for N in range(1, maxsize):

   N = toDec(Operation(Operation(toBin(N))))

   if N >= 210 and N <= 260:

       count += 1

       print(N)

   if N == 260:

       print(N)

       break

   if N > 260:

       count -= 1

print(f'{count} чисел от 210 до 260 было выведено.')

Вывод:

210

212

216

222

226

228

232

238

240

246

250

252

258

260

260

14 чисел от 210 до 260 было выведено.

Вас заинтересует