Предмет: Информатика,
автор: georgijschtscholokov
Дам 100 баллов(Питон)
Алиса учится работать с двоичными числами. Она уже поняла, что число в двоичной записи получается в несколько раз длиннее, чем в десятичной. А еще она поняла, что нули писать дольше чем единицы. И теперь ее любимые числа — это те, двоичная запись которых содержит как можно больше единиц. Алисе дали задание — выбрать одно произвольное число из заданного закрытого интервала [a;b][a;b] и перевести его в двоичную запись. И теперь Алиса просит, чтобы вы написали программу, которая найдет в этом интервале число, двоичная запись которого содержит наибольшее количество единиц. Если таких чисел будет несколько, то Алиса будет рада любому из них.
Формат входных данных
На вход через пробел подаются два натуральных числа aa и bb. При этом 1\leq a\leq b \leq 10^{18}1≤a≤b≤10
18
.
Формат выходных данных
Программа должна вывести одно целое число из заданного диапазона, двоичная запись которого содержит наибольшее количество единиц. Само число следует выводить в десятичной записи.
Ответы
Автор ответа:
1
numbers = input(" ").split(" ")
number_maximum = "0|0"
number_max = int(numbers[1])
number_min = int(numbers[0])
number_now = number_min
while number_now < number_max+1:
number_now2 = bin(number_now)
if int(number_maximum.split("|")[1]) < len([x for x in number_now2 if str(x) == "1"]):
number_maximum = f"""{number_now}|{len([x for x in number_now2 if str(x) == "1"])}"""
number_now = number_now + 1
number_now2 = []
print(number_maximum.split("|")[0])
georgijschtscholokov:
А почему не работает? При запуске выдаёт ошибку.
Не знаю, у меня все работает
Какой язык?
питон
[ ] Test #1. Runtime error
[ ] Test #2. Runtime error
[ ] Test #3. Runtime error
[ ] Test #4. Runtime error
[ ] Test #5. Runtime error
[ ] Test #6. Runtime error
[ ] Test #7. Runtime error
[ ] Test #8. Runtime error
[ ] Test #9. Runtime error
[ ] Test #10. Runtime error
[ ] Test #2. Runtime error
[ ] Test #3. Runtime error
[ ] Test #4. Runtime error
[ ] Test #5. Runtime error
[ ] Test #6. Runtime error
[ ] Test #7. Runtime error
[ ] Test #8. Runtime error
[ ] Test #9. Runtime error
[ ] Test #10. Runtime error
этот код не работает дядь,а 1 первый работает но на 19 из 20
у тебя есть мой дс
напиши
Автор ответа:
5
Ответ:
a, b = map(int, input().split())
k = 1
while b > k:
k *= 2
res = k-1
while res > b or a > res:
k //= 2
if a > res:
res += k
else:
res -= k
print(res)
Объяснение:
Можете чуть-чуть оптимизировать программу?
Я за гкод
Ой не туда
как удалить((
19 из 20,что не так?
скинь мне в дс правильное решение пж
Похожие вопросы
Предмет: Алгебра,
автор: zulu101
Предмет: Русский язык,
автор: Mamont11
Предмет: Русский язык,
автор: Аноним
Предмет: Информатика,
автор: Elarkhipa
Предмет: Французский язык,
автор: hhhhhhhh7