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

Помогите найти ошибку в коде решения 5 задания егэ по информатике

ВАдим Тагиров Гуру (2576), на голосовании 16 часов назад
Почему мой код выдаёт ошибку?
Дополнен 1 месяц назад
 list = []
for n in range(256):
s = bin(n)[2:]
s = str(s)
if len(s) < 8:
s = '0' * (8 - len(s)) + s
R = int(s[::-1])
s = int(s)
result = int(str(s - R), 2)
list.append(result)
print(max(list))
Голосование за лучший ответ
basturman Мыслитель (7857) 1 месяц назад
Чо это ваще на чем код написан втх хакер анонимус маска гай фокс мистар робат
П Знаток (277) 1 месяц назад
Напиши, что за задание для начала, потом код сюда вставь. А не скрин.
ВАдим ТагировГуру (2576) 1 месяц назад
все прикреплено, глаза разуйте
П Знаток (277) ВАдим Тагиров, max_result = 0 for N in range(256): # Для всех чисел от 0 до 255 # Получаем двоичное представление (8 бит) binary_rep = format(N, '08b') # Переворачиваем двоичное представление reversed_binary = binary_rep[::-1] # Переводим обратно в десятичное число reversed_number = int(reversed_binary, 2) # Вычисляем разницу result = N - reversed_number # Если результат положителен, обновляем максимальное значение if result > max_result: max_result = result return max_result
°••°••°••°••°••°••°••°••°••° Гуру (2635) 1 месяц назад
Когда ты вычитаешь из s R, у тебя число вычитается, как число из десятичной системы счисления и получается -9999999. Функция int() ожидает, что у строки будут 0 и 1, а получила девятки
Андрей Высший разум (462238) 1 месяц назад
Вполне очевидно, что максимум достигается при N == 0b11110000. В качестве подтверждения:
 10000000 - 00000001 = 01111111 = 127
11000000 - 00000011 = 10111101 = 189
11100000 - 00000111 = 11011001 = 217
11110000 - 00001111 = 11100001 = 225
11111000 - 00011111 = 11011001 = 217
Но если хочешь кодом, то:
 print(max([n - int((bin(n)[:1:-1] + '0000000')[:8], 2) for n in range(256)])) 
Похожие вопросы