Алгоритм получает на вход натуральное число N > 1 и строит по нему новое число R следующим образом:
1. Строится двоичная запись числа N.
2. Подсчитывается количество нулей и единиц в полученной записи. Если их количество одинаково, в конец записи добавляется её последняя цифра. В противном случае в конец записи добавляется цифра, которая встречается реже.
3. Шаг 2 повторяется ещё два раза.
4. Результат переводится в десятичную систему счисления.
При каком наименьшем исходном числе N > 93 в результате работы алгоритма получится число, кратное 6?
for n in range(94, 1000):
r = bin(n)[2:]
for i in range(3): # Повторяем шаг ровно 3 раза
count_ones = r.count(’1’) # Считаем количество 1
count_zeros = r.count(’0’) # Считаем количество 0
if count_ones == count_zeros: # Количество цифр одинаково
r = r + r[-1]
elif count_ones > count_zeros: # 0 встречается реже
r = r + ’0’
else: # 1 встречается реже
r = r + ’1’
r = int(r, 2) # Переводим результат в 10-ричную СС
if r % 6 == 0:
print(n)
break # Первое выведенное число будет минимальным
Ответ: 111