Steenrod代数是在代数拓扑中出现的重要代数。Steenrod代数由称为“ Steenrod平方”的算子生成,每个正整数i存在一个。Steenrod代数在平方运算中有一个由“可允许的单项式”组成的基础。建立这个基础是我们的目标。
正整数的序列被称为受理如果每个整数是至少下一个的两倍。因此,例如[7,2,1]
是受理,因为和。另一方面,[3,2]
由于,因此是不可接受的。(在拓扑中,我们将为序列写[7,2,1]
)。
序列的程度是其条目的总数。因此,例如,度数[7,2,1]
为。所述过量的容许序列的是第一个元素减去总的剩余元素,所以[7,2,1]
有过量的。
任务
编写一个程序,该程序接受一对正整数,(d,e)
并输出所有d
小于或等于的度和超出的所有允许序列的集合e
。输出是一个集合,因此允许序列的顺序无关紧要。
例子:
Input: 3,1
Output: [[2,1]]
在这里,我们正在寻找总数为3的可允许序列。有两个选项,[3]
和[2,1]
。([1,1,1]
且[1,2]
总和为3,但不可接受)。过量的[3]
是3和过量的[2,1]
是。因此,用过量的唯一序列是[2,1]
。
Input: 6, 6
Output: [[6], [5, 1], [4, 2]] (or any reordering, e.g., [[5,1],[4,2],[6]])
由于过量总是小于或等于度,因此我们没有过量条件。因此,我们只是想找到的程度6.所有容许序列的选项是[6]
,[5, 1]
和[4, 2]
。(这些具有过量,,和)。
Input: 10, 5
Output: [[7,3], [7,2,1], [6,3,1]]
允许的等级10的顺序为:
[[10], [9,1], [8,2], [7,3], [7,2,1], [6,3,1]]
这些有过量,,,,,和分别,所以最后三个所有的工作。
计分
这就是代码高尔夫:最短的解决方案以字节为单位。
测试用例:
输出的任何重新排序都同样好,因此对于input (3, 3)
,output [[3],[2,1]]
还是[[2,1],[3]]
同样可以接受的(但是[[1,2],[3]]
不是)。
Input: 1, 1
Output: [[1]]
Input: 3, 3
Output: [[2,1], [3]]
Input: 3, 1
Output: [[2,1]]
Input: 6, 6
Output: [[6], [5, 1], [4, 2]]
Input: 6, 4
Output: [[5,1], [4,2]]
Input: 6, 1
Output: []
Input: 7, 7
Output: [[7], [6,1], [4,2,1], [5,2]]
Input: 7,1
Output: [[4,2,1]]
Input: 10, 10
Output: [[10], [9,1], [7,2,1], [6,3,1], [8,2], [7,3]]
Input: 10, 5
Output: [[7,3], [7,2,1], [6,3,1]]
Input: 26, 4
Output: [15, 7, 3, 1]
Input: 26, 6
Output: [[16, 7, 2, 1], [16, 6, 3, 1], [15, 7, 3, 1], [16, 8, 2], [16, 7, 3]]