这个灵感来自非重复二进制-问题13的HP CodeWars'最近的比赛。
让我们取一个随机的十进制数
727429805944311
并查看其二进制表示形式:
10100101011001011111110011001011101010110111110111
现在,将该二进制表示形式拆分为数字0
和1
交替的子序列。
1010 010101 10 0101 1 1 1 1 1 10 01 10 0101 1 1010101 101 1 1 1 101 1 1
并将每个子序列转换回十进制。
10 21 2 5 1 1 1 1 1 2 1 2 5 1 85 5 1 1 1 5 1 1
任务
以单个正整数为输入,并输出通过上述过程获得的正整数序列。
细节
- 输入和输出必须为十进制或一进制。
- 输出中的数字必须以易于理解的方式分开,并且必须为十进制或一进制。对空格没有限制。有效的输出方式:
[1,2,3]
,1 2 3
,1\n2\n3
这里\n
是文字换行,等等。
测试用例
Input | Output
0 | 0
1 | 1
2 | 2
3 | 1 1
4 | 2 0
5 | 5
6 | 1 2
7 | 1 1 1
8 | 2 0 0
9 | 2 1
10 | 10
50 | 1 2 2
100 | 1 2 2 0
1000 | 1 1 1 1 10 0 0
10000 | 2 1 1 2 0 2 0 0 0
12914 | 1 2 2 1 1 2 2
371017 | 5 42 10 2 1
附加说明:输出中的所有数字均应采用(2^k-1)/3
或形式2*(2^k-1)/3
。即0 1 2 5 10 21, 42, 85, 170, ...
,即OEIS中的A000975。
|tac
然后将保留在我的回答中:)