C/C++,数字序列——计算伯努利数(Bernoulli Number)的计算方法与源程序

1 文本格式

typedef long long ll;
const int maxn = 10000;
const int mod = 1e9 + 7;
ll B[maxn];        // 伯努利数
ll C[maxn][maxn];  // 组合数
ll inv[maxn];      // 逆元(计算伯努利数)

void init() {
    // 预处理组合数
    for (int i = 0; i < maxn; i++) {
        C[i][0] = C[i][i] = 1;
        for (int k = 1; k < i; k++) {
            C[i][k] = (C[i - 1][k] % mod + C[i - 1][k - 1] % mod) % mod;
        }
    }
    // 预处理逆元
    inv[1] = 1;
    for (int i = 2; i < maxn; i++) {
        inv[i] = (mod - mod / i) * inv[mod % i] % mod;
    }
    // 预处理伯努利数
    B[0] = 1;
    for (int i = 1; i < maxn; i++) {
        ll ans = 0;
        if (i == maxn - 1) break;
        for (int k = 0; k < i; k++) {
            ans += C[i + 1][k] * B[k];
            ans %= mod;
        }
        ans = (ans * (-inv[i + 1]) % mod + mod) % mod;
        B[i] = ans;
    }
}

2 代码格式

typedef long long ll;
const int maxn = 10000;
const int mod = 1e9 + 7;
ll B[maxn];        // 伯努利数
ll C[maxn][maxn];  // 组合数
ll inv[maxn];      // 逆元(计算伯努利数)

void init() {
    // 预处理组合数
    for (int i = 0; i < maxn; i++) {
        C[i][0] = C[i][i] = 1;
        for (int k = 1; k < i; k++) {
            C[i][k] = (C[i - 1][k] % mod + C[i - 1][k - 1] % mod) % mod;
        }
    }
    // 预处理逆元
    inv[1] = 1;
    for (int i = 2; i < maxn; i++) {
        inv[i] = (mod - mod / i) * inv[mod % i] % mod;
    }
    // 预处理伯努利数
    B[0] = 1;
    for (int i = 1; i < maxn; i++) {
        ll ans = 0;
        if (i == maxn - 1) break;
        for (int k = 0; k < i; k++) {
            ans += C[i + 1][k] * B[k];
            ans %= mod;
        }
        ans = (ans * (-inv[i + 1]) % mod + mod) % mod;
        B[i] = ans;
    }
}

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 09:24:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 09:24:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 09:24:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 09:24:03       18 阅读

热门阅读

  1. vue项目中如何引入zip压缩包之解决方案

    2023-12-08 09:24:03       42 阅读
  2. Installing GDS

    2023-12-08 09:24:03       41 阅读
  3. 【1day】金和OA某接口存在未授权访问漏洞

    2023-12-08 09:24:03       31 阅读
  4. ARM虚拟化与车联网安全应用

    2023-12-08 09:24:03       39 阅读
  5. 【RabbitMQ高级功能详解以及常用插件实战】

    2023-12-08 09:24:03       37 阅读
  6. mysql的Altas读写分离(实战配置版)

    2023-12-08 09:24:03       36 阅读