我们定义作为鲜明的权力清单2那笔X。例如,V (35 )= [ 32 ,2 ,1 ]。
按照惯例,此处的权力从最高到最低排序。但这不会影响挑战的逻辑,也不会影响预期的解决方案。
任务
给定一个半素数 ,将V (N )中的每个项替换为另一个与该项加和的2的幂的列表,这样所有结果子列表的并集就是矩阵M的精确覆盖,定义为:
其中和Q是N的素数。
通过一些示例,这更容易理解。
例子1
对于,我们有:
- 和 V (P )= [ 4 ,2 ,1 ]
- 和 V (Q )= [ 2 ,1 ]
要将变成M的精确覆盖,我们可以将16分成8 + 4 + 4和4分成2 + 2,而1保持不变。因此,可能的输出是:
另一个有效的输出是:
范例#2
对于,我们有:
- 和 V (P )= [ 32 ,4 ,1 ]
- 和 V (Q )= [ 16 ,4 ,2 ,1 ]
可能的输出是:
规则
- 因为将分解不是挑战的主要部分,所以您可以交替使用P和Q作为输入。
- 当存在几种可能的解决方案时,您可以只返回其中之一,也可以全部返回。
- 你可以交替地返回功率的指数(例如,,而不是[ [ 8 ,4 ,4 ] ,[ 2 ,2 ] ,[ 1 ] ])。
- 子列表的顺序无关紧要,每个子列表中术语的顺序也无关紧要。
- 对于某些半素数,您无需拆分任何项,因为已经是M的完美覆盖(请参阅A235040)。但是您仍然必须返回(单例)列表的列表,例如[ [ 8 ] ,[ 4 ] ,[ 2 ] ,[ 1 ] ],N = 15。
- 这是代码高尔夫球!
测试用例
Input | Possible output
-------+-----------------------------------------------------------------------------
9 | [ [ 4, 2, 2 ], [ 1 ] ]
15 | [ [ 8 ], [ 4 ], [ 2 ], [ 1 ] ]
21 | [ [ 8, 4, 4 ], [ 2, 2 ], [ 1 ] ]
51 | [ [ 32 ], [ 16 ], [ 2 ], [ 1 ] ]
129 | [ [ 64, 32, 16, 8, 4, 2, 2 ], [ 1 ] ]
159 | [ [ 64, 32, 32 ], [ 16 ], [ 8 ], [ 4 ], [ 2 ], [ 1 ] ]
161 | [ [ 64, 32, 16, 16 ], [ 8, 8, 4, 4, 4, 2, 2 ], [ 1 ] ]
201 | [ [ 128 ], [ 64 ], [ 4, 2, 2 ], [ 1 ] ]
403 | [ [ 128, 64, 64 ], [ 32, 32, 16, 16, 16, 8, 8 ], [ 8, 4, 4 ], [ 2 ], [ 1 ] ]
851 | [ [ 512 ], [ 128, 64, 64 ], [ 32, 16, 16 ], [ 8, 4, 4 ], [ 2 ], [ 1 ] ]
2307 | [ [ 1024, 512, 512 ], [ 256 ], [ 2 ], [ 1 ] ]