Вам задана бинарная строка $$$s$$$ длины $$$n$$$ (строка, состоящая из $$$n$$$ символов, и каждый символ — либо 0, либо 1).
Посмотрим на строку $$$s$$$ как на двоичное представление некоторого числа, и назовем это число значением строки $$$s$$$. Например, значение строки 000 равно $$$0$$$, значение 01101 равно $$$13$$$, значение 100000 — это $$$32$$$, и так далее.
Вы можете применить не более $$$k$$$ операций к $$$s$$$. Каждая операция должна иметь один из следующих двух типов:
Какое минимальное значение строки $$$s$$$ вы можете получить, применив не более $$$k$$$ операций к $$$s$$$?
В первой строке заданы два целых числа $$$n$$$ и $$$k$$$ ($$$2 \le n \le 5 \cdot 10^5$$$; $$$1 \le k \le n$$$) — длина строки $$$s$$$ и максимальное количество операций.
Во второй строке задана строка $$$s$$$ длины $$$n$$$, состоящая из символов 0 и/или 1.
Дополнительное ограничение на входные данные: в строке $$$s$$$ есть хотя бы одна цифра 1.
Выведите одно целое число — наименьшее возможное значение строки $$$s$$$, которое вы можете получить, применив не более $$$k$$$ операций. Так как ответ может быть слишком большим, выведите его по модулю $$$10^{9} + 7$$$.
Заметим, что вы должны минимизировать само значение, а не его остаток.
8 210010010
7
8 201101000
7
30 30111111111111111111111111111111
73741816
14 110110001111100
3197
В первом примере, одна из оптимальных стратегий — следующая:
Во втором примере, одна из оптимальных стратегий — следующая:
Название |
---|