Предмет: Информатика,
автор: mary729739
Ребят помогите пожалуйста .Нужен код(питон) ну или на крайняк ответ.
Алгоритм получает на вход натуральное число N> 1 и строит по нему новое число R следующим образом:
1) Строится двоичная запись числа N.
2) Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется ее
последняя цифро. В противном случае в конец записи добавляется цифра, которая встречается реже.
3) Шаг 2 повторяется еще два раза.
4) Результат переводится в десятичную систему счисления,
При каком наименьшем исходном числе N> 100 в результате работы алгоритма получится число, которое делится на 4 и не делится на 8
Ответы
Автор ответа:
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)
Автор ответа:
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
Приложения:
Похожие вопросы
Предмет: Английский язык,
автор: Аноним
Предмет: Русский язык,
автор: Пацанчик26
Предмет: Английский язык,
автор: lali05
Предмет: Математика,
автор: kritik0630
Предмет: Русский язык,
автор: vlad20052777