zoukankan      html  css  js  c++  java
  • 恶补---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 1000000007
    int _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
    ",bellnum[i]);
        return 0;
    }

    性质

    它们也适合“Touchard同余”:若p是任意质数,那么
     
     
     
  • 相关阅读:
    Day 9 作业题(完成)
    Day 9 函数的初识1
    Day 8 集合与文件的操作
    Day 7 深copy和浅Copy
    Day6 ,周期末考试试题
    Day 6 编码的进阶
    Day5 作业(完成)
    Day 5 字典的操作
    Day4 作业
    Day 4 list 列表的使用方法
  • 原文地址:https://www.cnblogs.com/keshuqi/p/6359102.html
Copyright © 2011-2022 走看看