Codeforces Round 629 (Div. 3) |
---|
Закончено |
Число называется троичным, если оно содержит только цифры $$$0$$$, $$$1$$$ и $$$2$$$. Например, следующие числа являются троичными: $$$1022$$$, $$$11$$$, $$$21$$$, $$$2002$$$.
Вам задано длинное троичное число $$$x$$$. Первая (самая левая) цифра числа $$$x$$$ гарантированно является $$$2$$$, остальные цифры числа $$$x$$$ могут быть $$$0$$$, $$$1$$$ или $$$2$$$.
Определим троичную операцию XOR $$$\odot$$$ над двумя троичными числами $$$a$$$ и $$$b$$$ (оба имеют длину $$$n$$$) как число $$$c = a \odot b$$$ длины $$$n$$$, где $$$c_i = (a_i + b_i) \% 3$$$ (где $$$\%$$$ — операция взятия по модулю). Другими словами, сложим соответствующие цифры и возьмем остатки от сумм при делении на $$$3$$$. Например, $$$10222 \odot 11021 = 21210$$$.
Ваша задача — найти такие троичные числа $$$a$$$ и $$$b$$$ (оба длины $$$n$$$ и без лидирующих нулей), что $$$a \odot b = x$$$ и $$$max(a, b)$$$ — минимально возможный.
Вам нужно ответить на $$$t$$$ независимых наборов входных данных.
Первая строка теста содержит одно целое число $$$t$$$ ($$$1 \le t \le 10^4$$$) — количество наборов входных данных. Затем следуют $$$t$$$ наборов входных данных. Первая строка набора содержит одно целое число $$$n$$$ ($$$1 \le n \le 5 \cdot 10^4$$$) — длину числа $$$x$$$. Вторая строка набора содержит троичное число $$$x$$$, состоящее из $$$n$$$ цифр $$$0, 1$$$ и $$$2$$$. Гарантируется, что первой цифрой числа $$$x$$$ является $$$2$$$. Также гарантируется, что сумма всех $$$n$$$ по всем наборам входных данных не превосходит $$$5 \cdot 10^4$$$ ($$$\sum n \le 5 \cdot 10^4$$$).
Для каждого набора входных данных выведите ответ на него — два троичных числа $$$a$$$ и $$$b$$$ (каждое длины $$$n$$$ и без лидирующих нулей) таких, что $$$a \odot b = x$$$ и $$$max(a, b)$$$ — минимально возможное. Если есть несколько возможных ответов, вы можете вывести любой.
4 5 22222 5 21211 1 2 9 220222021
11111 11111 11000 10211 1 1 110111011 110111010
Название |
---|