甲贝尔数(OEIS A000110)是方式来划分一组n个标记的(不同)的元素数。第0个响铃编号定义为1。
让我们看一些示例(我使用方括号表示分区的子集和大括号):
1: {1}
2: {[1,2]}, {[1],[2]}
3: {[1,2,3]}, {[1,2],[3]}, {[1,3],[2]}, {[2,3],[1]}, {[1],[2],[3]}
有多种计算贝尔编号的方法,您可以自由使用其中任何一种。这里将描述一种方法:
计算贝尔数的最简单方法是对二项式系数使用类似于Pascal三角形的数字三角形。钟形数字出现在三角形的边缘。从1开始,通过将上一行的最后一个条目作为第一个条目,然后将每个新条目设置为其左邻居加上左上邻居,来构造三角形中的每个新行:
1
1 2
2 3 5
5 7 10 15
15 20 27 37 52
您可以使用0索引或1索引。如果使用0索引,则输入3应该为输出5,但是2如果使用1索引,则应该输出。
您的程序必须输出15号铃号1382958545。从理论上讲,您的程序应该能够处理更大的数字(换句话说,不要对解决方案进行硬编码)。
编辑:您不需要处理输入0(对于0索引)或1(对于1索引),因为它不是由三角方法计算的。
测试用例(假设索引为0):
0 -> 1 (OPTIONAL)
1 -> 1
2 -> 2
3 -> 5
4 -> 15
5 -> 52
6 -> 203
7 -> 877
8 -> 4140
9 -> 21147
10 -> 115975
11 -> 678570
12 -> 4213597
13 -> 27644437
14 -> 190899322
15 -> 1382958545
使用内置方法(例如Wolfram语言中的BellB [n])直接产生响铃编号的答案将失去竞争力。
最短的代码(以字节为单位)获胜。
3应该输出2。那么输入将为11-indexing提供什么呢?



3输出应为5ouput15,对吗?并使用1索引将输出5