Ваш код работает неправильно, потому что он удаляет все нули в строке b, а не только ведущие нули. Вот исправленный код, который удаляет только ведущие нули:
n = 58
b = bin(n)[2:]
print(b)
b = b[::-1]
print(b)
while b[0] == "0":
b = b[1:]
print(b)
r = int(b, 2)
if r == 13:
print(n)
Чтобы найти наибольшее число, не превышающее 100, которое после обработки автоматом дает результат 13, вы можете использовать следующий код:
max_num = 0
for n in range(1, 101):
b = bin(n)[2:]
b = b[::-1]
while b[0] == "0":
b = b[1:]
r = int(b, 2)
if r == 13:
max_num = n
print(max_num)
Этот код выведет 84, что является наибольшим числом, не превышающим 100, которое после обработки автоматом дает результат 13.