Ctrl K

Произведения двоичных кусков

Средняя
Положительное число total можно единственным способом записать как сумму различных степеней двойки (это его двоичная запись). Выпишите эти степени по возрастанию — получится массив кусков pieces, нумерация с 0. Дан массив запросов queries, где queries[i] = [l, r]. Ответ на запрос — произведение pieces[l] · pieces[l+1] · ... · pieces[r]. Так как оно может быть очень большим, верните его по модулю 10⁹ + 7. Верните ответы на все запросы в их порядке.
Пример 1
total=13, queries=[[0, 1], [1, 2], [2, 2]] → [4, 32, 8]

13 = 1 + 4 + 8, поэтому куски [1, 4, 8]. Произведения: 1·4 = 4, 4·8 = 32, и просто 8.

Пример 2
total=6, queries=[[0, 1]] → [8]

6 = 2 + 4, куски [2, 4], их произведение 8.

Ограничения
  • 1 ≤ total ≤ 10⁹
  • 1 ≤ queries.length ≤ 10⁵
  • 0 ≤ l ≤ r < pieces.length
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПалиндром после пары правок СредняяXOR на отрезках СредняяРазрез на равные по XOR половины СредняяK-й по величине XOR угла СредняяДополнение XOR при укорачивании Средняя
загружаем Python…
Вход
total=13, queries=[[0, 1], [1, 2], [2, 2]]
Ожидается
[4, 32, 8]

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