Автомат обрабатывает десятичное натуральное число N по следующему алгоритму:
- Строится двоичная запись числа N.
- К полученному числу справа дописывается 0, если в числе единиц больше, чем нулей; иначе дописывается 1.
- Из середины двоичного числа убирается 2 разряда, если количество разрядов получилось четным, и 3 разряда, если нечетное.
- Результат переводится в десятичную систему.
Для скольких различных значений N в результате работы автомата получается число 46?
Решение. Напишtм программу на языке Phyton
k=0
for n in range (4,1000):
for n in range (4,1000):
#1
a = bin (n) [2:]
a = bin (n) [2:]
#2
if a.count('1') > a.count('0'):
a = a + '0'
else:
a = a + '1'
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:]
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)
x = int(a,2)
if x == 46:
k+=1
print (k)
Ответ: 11
Комментариев нет:
Отправить комментарий