#P1362. Skew Binary

Skew Binary

翻译结果

P1362. 斜二进制表示法

题目描述

Swamp County Computing的函数式编程小组已经成立一周年了。你的(非函数式编程)小组准备为他们举办一个惊喜派对。函数式编程爱好者们特别喜欢斜二进制数(skew binary),他们说:"这种表示法增减起来特别方便!"你的任务是编写一个程序,将十进制整数转换为斜二进制表示法,这将有助于制作派对横幅和其他材料。

数字表示由一组数位(digits)组成。最低位称为0阶数位,次低位称为1阶数位,以此类推。例如:

  • 十进制表示中,数位是00-99ii阶数位的权重是10i10^i
  • 二进制表示中,数位是0011ii阶数位的权重是2i2^i
  • 斜二进制表示中,数位是001122ii阶数位的权重是2i+112^{i+1}-1
阶数 权重
0 11
1 33
2 77
3 1515
4 3131
5 6363
...

允许使用数字22意味着一个数可能有多种表示方法。但按照约定,数字22只能作为最低阶的非零数位出现,这使得表示方法唯一。

在本问题中,你需要使用一种特殊方式来表示斜二进制数:将非零数位的阶数列出列表。如果某位是22,则将该阶数在列表中重复出现两次。注意这意味着列表中只有前两个元素可能相同。

每个阶数以十进制整数表示,用逗号(,)分隔。列表以'['开始,']'结束。例如:

  • 十进制数55的斜二进制表示为1212,应写作[0,0,1][0,0,1]
  • 十进制00表示为空列表[][]

输入格式

  • 第一行:测试用例数tt (1t101 \leq t \leq 10)
  • 接下来tt行:每行一个十进制数(无前导或后缀空格),范围00-100663270100663270

输出格式

每个测试用例输出一行,包含:

  1. 输入的十进制数(无前导零或空格)
  2. 一个空格
  3. 斜二进制列表表示(无额外空格)

样例输入

5
0
1
2
3
4

样例输出

0 []
1 [0]
2 [0,0]
3 [1]
4 [0,1]

题目来源

Tehran 2002