首页 > 代码库 > 恶补---bell数
恶补---bell数
定义
bell数即一个集合划分的数目
示例
前几项的bell数列为
1, 1, 2, 5, 15, 52, 203, 877, 4140, 21147, 115975 ,...
求值方法
1、bell数适合递推公式
2、每个贝尔数都是"第二类Stirling数"的和
3、用一下方法可以构造一个bell三角形(Aitken阵列或Peirce三角形)
1)第一行第一列是1
2)对于n>1,第n行第一列等于上一行的最后一个数
3)对于n>1,m>1,第n行第m列=第n行第m-1列+第n-1行第m-1列
三角阵的第一列是bell数
下面给出我的构造程序(用滚动数组+模数)
#include <stdio.h>#define MaxN 110#define mo 1000000007int _t;unsigned long long f[2][MaxN],bellnum[MaxN];void bell_number(int n){ int c = 0; f[c][1] = 1LL; bellnum[++_t]=1LL; for(int i = 2;i <= n;i++) { c ^= 1; bellnum[++_t] = f[c][1] = f[c ^ 1][i - 1]; for(int j = 2;j <= i;j++) f[c][j] = (f[c][j - 1] + f[c ^ 1][j - 1]) % mo; }}int main(){ int x; scanf("%d",&x); bell_number(x); for(int i = 1;i <= x;i++) printf("%lld\n",bellnum[i]); return 0;}
性质
它们也适合“Touchard同余”:若p是任意质数,那么
恶补---bell数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。