A ベル番号(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]}
ベル番号を計算するには多くの方法があり、自由に使用できます。1つの方法をここで説明します。
ベル数を計算する最も簡単な方法は、二項係数にパスカルの三角形に似た数三角形を使用することです。ベル番号は、三角形の端に表示されます。1から開始して、三角形の各新しい行は、前の行の最後のエントリを最初のエントリとして、左の隣人と左上の隣人にそれぞれの新しいエントリを設定することによって構築されます。
1
1 2
2 3 5
5 7 10 15
15 20 27 37 52
0インデックスまたは1インデックスを使用できます。0インデックスを使用する場合、入力は3output 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はoutputになります2。次に1、1インデックス付けで入力は何をしますか?



35それを出力するはず15です、そうですか?1インデックスを使用すると、出力されます5