벨 번호 ( 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 2
2 3 5
5 7 10 15
15 20 27 37 52
0 인덱싱 또는 1 인덱싱을 사용할 수 있습니다. 0 인덱싱을 사용하는 경우 입력은 3should 출력 5이지만 21 인덱싱을 사용하는 경우 출력해야 합니다.
프로그램은 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
Bell 번호를 직접 생성하는 내장 방법 (예 : Wolfram 언어의 BellB [n])을 사용하는 답변은 경쟁이되지 않습니다.
가장 짧은 코드 (바이트)가 이깁니다.
3이 출력되어야 한다고 말합니다 2. 그렇다면 입력 1은 1 인덱싱으로 무엇을 줄 것 입니까?



3SHOULD 출력5이 OUPUT 것15오른쪽? 그리고 1- 인덱싱으로 출력됩니다5