Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить срочно!!

Фёдор Светов Ученик (91), открыт 3 недели назад
На вход алгоритма подаётся натуральное число N. Алгоритм строит по нему новое число R следующим образом.

1. Строится двоичная запись числа N.

2. К этой записи дописываются справа ещё два разряда по следующему правилу:

- если N делится нацело на 4, в конец числа (справа) дописывается сначала ноль, затем ещё один ноль;

- если N при делении на 4 даёт в остатке 1, то в конец числа (справа) дописывается сначала ноль, затем единица;

- если N при делении на 4 дает в остатке 2, то в конец числа (справа) дописывается сначала один, а затем ноль;

- если N при делении на 4 даёт в остатке 3, в конец числа (справа) дописывается сначала один, а затем ещё одна единица.

Например, двоичная запись 1001 числа 9 будет преобразована в 100101, а двоичная запись 1100 числа 12 будет преобразована в 110000.

Полученная таким образом запись (в ней на два разряда больше, чем в записи исходного числа N) является двоичной записью числа R - результата работы данного алгоритма.

Укажите максимальное число R, которое меньше 100 и может являться результатом работы данного алгоритма. В ответе это число запишите в десятичной системе счисления.
2 ответа
Вертолётов 625 Мудрец (13019) 3 недели назад
Qwen2.5-Math-72B-instruct.
Ответ: 95

Решение:
Роман ЛетневМастер (1038) 3 недели назад
Зачем весь этот геморрой, когда можно по коду решить?

 for n in range(1, 100):  
s = bin(n)[2:] # перевод в двоичную систему
if n % 2 == 0:
s += "00"
else:
s += "11"
r = int(s, 2) # перевод в десятичную систему
if r > 100:
print(n)
break
Ответ: 25
Роман Летнев Мастер (1038) 3 недели назад
 for n in range(1, 100): 
s = bin(n)[2:] # перевод в двоичную систему
if n % 2 == 0:
s += "00"
else:
s += "11"
r = int(s, 2) # перевод в десятичную систему
if r > 100:
print(n)
break
Вот тебе алгоритм решения данной задачи на будущее. Ответ будет: 25
Вертолётов 625Мудрец (13019) 3 недели назад
А разве не так?:
 max_r = 0 

for n in range(1, 100):
# Получаем двоичное представление числа n
binary_n = bin(n)[2:]

# Определяем, какие два разряда добавить
if n % 4 == 0:
binary_r = binary_n + "00"
elif n % 4 == 1:
binary_r = binary_n + "01"
elif n % 4 == 2:
binary_r = binary_n + "10"
else: # n % 4 == 3
binary_r = binary_n + "11"

# Переводим полученную двоичную запись обратно в десятичную систему
r = int(binary_r, 2)

# Проверяем, меньше ли r чем 100 и обновляем максимальное значение
if r < 100 and r > max_r:
max_r = r

print(max_r)
Роман Летнев Мастер (1038) Вертолётов 625, нет
Похожие вопросы