题目描述

设S是一个具有n个元素的集合,S=〈a1,a2,……,an〉,现将S划分成k个满足下列条件的子集合S1,S2,……,Sk且满足: 1.Si≠∅ 2.Si∩Sj=∅ (1≤i,j≤k,i≠j) 3.S1∪S2∪S3∪…∪Sk=S

则称S1,S2,……,Sk是集合S的一个划分。

它相当于把S集合中的n个元素a1,a2,……,an放入k个(0<k≤n<30)无标号的盒子中,使得没有一个盒子为空。请你确定n个元素a1,a2,……,an放入k个无标号盒子中去的划分数S(n,k)。

输入格式

输入一行两个数,给出n和k。

输出格式

输出一行一个数,n个元素a1,a2,……,an放入k个无标号盒子中去的划分数S(n,k)。

样例数据

输入数据 1

23 7

Copy

输出数据 1

4382641999117305

3 comments

  • @ 2022-12-3 13:30:38

    @shootrqy #include<iostream> using namespace std; long long calculate(long long n,long long k) { if(n<k||k0) return 0; if(nk||k==1) return 1; return calculate(n-1,k-1)+k*calculate(n-1,k); } int main() { long long n,k; cin>>n>>k; cout<<calculate(n,k)<<endl; return 0; }

    • @ 2022-8-12 20:47:36

      题目格式一堆问题,差评!

      • @ 2022-8-9 21:19:34

        有人可以把题目解释一下吗

        • 1