16 марта 2025 г.

Программирование. Задание № 5 "Анализ алгоритмов для исполнителей"

Автомат обрабатывает десятичное натуральное число N по следующему алгоритму:

  1. Строится двоичная запись числа N.
  2. К полученному числу справа дописывается 0, если в числе единиц больше, чем нулей; иначе дописывается 1.
  3. Из середины двоичного числа убирается 2 разряда, если количество разрядов получилось четным, и 3 разряда, если нечетное.
  4. Результат переводится в десятичную систему.
Для скольких различных значений N в результате работы автомата получается число 46?

Решение. Напишtм программу на языке Phyton

k=0
for n in range (4,1000):
#1
  a = bin (n) [2:]
#2
  if a.count('1') > a.count('0'):
    a = a + '0'
  else:
    a = a + '1'
#3
  if len(a) % 2 == 0:
    d = int(len(a)/2)
    a = a [:d-1] + a [d+1:]
  else:
    d = int(len(a)//2) + 1
    a = a [:d-2] + a [d+1:]
#4
  x = int(a,2)
  if x == 46: 
    k+=1
print (k)

Ответ: 11

Комментариев нет:

Отправить комментарий