D. Ксор, выражение, два бинарных числа
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Дано число $$$k$$$. Есть последовательность $$$n$$$-битных бинарных чисел $$$a_1, a_2, \ldots, a_{2^k + 1}$$$. Числа $$$a_1$$$ и $$$a_{2^k + 1}$$$ вам даны, а остальные неизвестны. После этого неизвестные числа заполняются следующим образом за $$$k$$$ шагов:

  • Пусть перед $$$i$$$-м шагом были заполнены числа с номерами $$$p_1 \lt p_2 \lt \ldots \lt p_m$$$. (Перед первым шагом это числа с номерами $$$1, 2^{k} + 1$$$).
  • Затем для каждого $$$j$$$ от $$$1$$$ до $$$m - 1$$$ выполняется $$$a_{\frac{p_j + p_{j + 1}}{2}} := a_{p_j} \oplus a_{p_{j + 1}}$$$$$$^{\text{∗}}$$$.
  • Эти присвоения происходят одновременно, а после все эти числа также становятся заполненными.

Можно показать, что этот процесс всегда полностью заполняет все числа.

Так выглядит процесс при $$$k = 2$$$ и $$$n = 3$$$, где изначально $$$a_1 = \texttt{010}, a_5 = \texttt{110}$$$:

  • Перед первым шагом заполнены числа с номерами $$$1, 5$$$. А значит, на этой операции будет выполнено $$$a_3 := a_1 \oplus a_5 = \texttt{010} \oplus \texttt{110} = \texttt{100}$$$.
  • Перед вторым шагом заполнены числа с номерами $$$1, 3, 5$$$. А значит, на этой операции будет выполнено $$$a_2 := a_1 \oplus a_3 = \texttt{110}$$$ и $$$a_4 = a_{3} \oplus a_{5} = \texttt{010}$$$.

Вам необходимо посчитать следующее выражение: $$$x_1 \cdot y_1 + x_2 \cdot y_2 + \ldots + x_{2^k + 1} \cdot y_{2^k + 1}$$$, где $$$x_i$$$ — количество единичных битов в $$$i$$$-м числе, а $$$y_i$$$ — количество нулевых битов в $$$i$$$-м числе.

$$$^{\text{∗}}$$$$$$x \oplus y$$$ означает побитовое исключающее ИЛИ чисел $$$x$$$ и $$$y$$$

Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа $$$n, k$$$ ($$$1 \leq n \leq 10^5$$$, $$$1 \leq k \leq 30$$$) — длина бинарных чисел и число, определяющее количество бинарных чисел в последовательности.

Вторая строка каждого набора входных данных содержит бинарную строку $$$s$$$ длины $$$n$$$ ($$$s_i \in \{\texttt{0}, \texttt{1}\}$$$) — значение $$$a_1$$$.

Третья строка каждого набора входных данных содержит бинарную строку $$$z$$$ длины $$$n$$$ ($$$z_i \in \{\texttt{0}, \texttt{1}\}$$$) — значение $$$a_{2^k + 1}$$$.

Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превосходит $$$10^5$$$.

Выходные данные

Для каждого набора входных данных выведите одно целое число — значение выражения из условия.

Пример
Входные данные
4
3 2
010
110
1 1
0
0
2 2
01
00
7 30
1010111
0011010
Выходные данные
10
0
3
12169074016
Примечание

В первом наборе входных данных процесс был описан в условии. А получившаяся последовательность бинарных чисел равна $$$[\texttt{010}, \texttt{110}, \texttt{100}, \texttt{010}, \texttt{110}]$$$. Тогда выражение в условии равно $$$1 \cdot 2 + 2 \cdot 1 + 1 \cdot 2 + 1 \cdot 2 + 2 \cdot 1 = 10$$$.

Во втором наборе входных данных на первом шаге выполняется $$$a_2 = a_1 \oplus a_3 = \texttt{0} \oplus \texttt{0} = \texttt{0}$$$. А значит, получившаяся последовательность чисел $$$[\texttt{0}, \texttt{0}, \texttt{0}]$$$. Для нее значение выражения равно нулю.