Ctrl K

Битовый налог в пределах бюджета

Средняя
Пронумеруем биты двоичной записи числа справа налево, начиная с 1. Налог числа num — это количество единичных битов на позициях step, 2·step, 3·step, … Например, 13 = 1101: при step = 1 налог равен 3, при step = 2 — 1 (единица только на позиции 4). Накопленный налог числа num — сумма налогов всех чисел от 1 до num. Верните наибольшее num, у которого накопленный налог не превышает budget.
Пример 1
budget=6, step=1 → 4

При step = 1 налог — это число единиц: 1, 1, 2, 1 для чисел 1–4, в сумме 5. У числа 5 налог 2, сумма стала бы 7 > 6.

Пример 2
budget=3, step=2 → 6

Облагается только бит 2 (вес 2). Налог у чисел 1–7: 0, 1, 1, 0, 0, 1, 1 — сумма до 6 равна 3, а с числом 7 уже 4.

Ограничения
  • 1 ≤ budget ≤ 10¹⁵
  • 1 ≤ step ≤ 8
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДве равные команды с близкими суммами СложнаяКуски с заданным AND и дешёвые хвосты СложнаяНайти лишнюю копию СредняяСамая длинная растущая выборка СредняяГрафические ключи на девяти точках Средняя
загружаем Python…
Вход
budget=6, step=1
Ожидается
4

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 128 тестов на сервере, включая скрытые.