Ребят помогите пожалуйста .Нужен код(питон) ну или на крайняк ответ.
Алгоритм получает на вход натуральное число N> 1 и строит по нему новое число R следующим образом:
1) Строится двоичная запись числа N.
2) Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется ее
последняя цифро. В противном случае в конец записи добавляется цифра, которая встречается реже.
3) Шаг 2 повторяется еще два раза.
4) Результат переводится в десятичную систему счисления,
При каком наименьшем исходном числе N> 100 в результате работы алгоритма получится число, которое делится на 4 и не делится на 8

Ответы

Ответ дал: SmEgDm
1

Ответ:

135

Объяснение:

def increase(n_bin):

zero_count = sum([digit == '0' for digit in n_bin[2:]])

if zero_count * 2 == len(n_bin[2:]):

 return n_bin + n_bin[-1]

else:

 return n_bin + str(int((zero_count > len(n_bin[2:]) / 2)))

def alg(n):

return int(increase(increase(increase(bin(n)))), 2)

n = 101

while True:

if alg(n) % 4 == 0 and alg(n) % 8 != 0:

 break

n += 1

print(n)

Ответ дал: mirageKZ
1

Ответ:

n = 135

Объяснение:

def getres(a):

   b=bin(a)[2:]

   for i in range(3):

       zero=b.count('0')

       one=len(b)-zero

       if zero==one:

           b+=b[len(b)-1]

       elif zero>one:

           b+='1'

       else:

           b+='0'

   return int(b,2)

for n in range (100, 1000):

   p=getres(n)

   if p%4==0 and p%8!=0:

       print('Число=', p, ' при n=',n)

       break

Приложения:
Вас заинтересует