#XMOJ10422. 三进制异或

三进制异或

说明

时间限制:1 Sec 内存限制:256 MB 输入文件xor.in 输出文件xor.out

我们知道,三进制数包含三种数码:001122

现在来定义三进制下的异或运算 \odot:对于任意两个三进制数位 aabbab=(a+b)%3a \odot b=(a+b)\%3,即 aabb 之和除以 33 的余数。

而两个三进制数 aabb 的异或计算,就是各自的三进制形态最低位对齐(位数不同则高位补零后对齐),按位依次进行异或计算,再合并为三进制数(与二进制数的位运算规则一致)。

例如:1102221021=111210110222 \odot 1021=111210

现在小明得到一个三进制数 xx,最高位保证是 22。他需要找到两个三进制数 aabb,使得:

  • aabb 的位数一样多(不含前导 00
  • ab=xa \odot b=x

在所有满足条件的 (a,b)(a,b) 中,max(a,b)max(a,b) 最小时,aabb 分别是多少?

输入格式

第一行为一个整数 tt,表示有 tt 组询问;

接下来为 tt 行,每行一个三进制数 xx,第 ii 行为第 ii 组询问。

输出格式

tt 组,每组 22 行,第 ii 组输出为对第 ii 组询问的回答,即对应的 max(a,b)max(a,b) 取最小值时,aabb 分别是多少,两个数各占一行。如果两个数不相等,大的那个数先输出。

样例

样例 1

4
2
22222
21211
220222021
1
1
11111
11111
11000
10211
110111011
110111010

样例说明:44 组询问满足要求的 (a,b)(a,b) 依次如下:

2=112=1 \odot 1

22222=111111111122222=11111 \odot 11111

21211=110001021121211=11000 \odot 10211

220222021=110111011110111010220222021=110111011 \odot 110111010

数据范围

1t1041 \le t \le 10^4

x|x| 表示字符串 xx 的位数,有 1x5×1041 \le |x| \le 5 \times 10^4

题目保证所有的 x|x| 之和不超过 5×1045 \times 10^4