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

news2025/1/18 17:04:06

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;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1293727.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PHPstudy小皮的数据库打开失败问题解决

如果你的MYSQL服务启动后停止&#xff0c;多次重启依然无法解决的情况下&#xff0c;大概率是和本地mysql冲突了 但是&#xff0c;千万不要卸载掉本地mysql&#xff0c;只需要在服务中停止本地mysql即可 将此服务关闭&#xff0c;小皮的mysql即可使用

AI助力智慧农业,基于DETR【DEtection TRansformer】模型开发构建田间作物场景下庄稼作物、杂草检测识别系统

智慧农业随着数字化信息化浪潮的演变有了新的定义&#xff0c;在前面的系列博文中&#xff0c;我们从一些现实世界里面的所见所想所感进行了很多对应的实践&#xff0c;感兴趣的话可以自行移步阅读即可&#xff1a; 《自建数据集&#xff0c;基于YOLOv7开发构建农田场景下杂草…

学会使用这个魔法棒,再也不用在容器里安装乱七八糟的命令工具了!

在构建镜像的时候&#xff0c;我总是倾向于极简构建&#xff0c;一切没有必要的软件包都不安装&#xff0c;以此来缩小镜像的容量。但是这种做法为后续运维带来了一些困难&#xff0c;如在日常查询、排查问题的时候发现很多命令用不了&#xff0c;不得不在容器中安装额外的命令…

堆栈,BSS,DATA,TEXT

一、目标文件 首先目标文件的构成&#xff0c;Linux下就是.o 文件 编译器编译源码后生成的文件叫目标文件&#xff08;Object File&#xff09;。 目标文件和可执行文件一般采用同一种格式&#xff0c;这种存储格式为 ELF。 目前文件的内容至少有编译后的机器指令代码和数据&a…

【PCB设计】嘉立创EDA器件3D模型导入AD的方法

嘉立创EDA器件3D模型导入AD的方法 一、嘉立创EDA导出3D模型二、CAD编辑3D模型三、AD中加载3D模型 一、嘉立创EDA导出3D模型 在嘉立创EDA中找到对应的元器件&#xff0c;并生成PCB&#xff0c;选择导出3D文件 导出元件step模型 二、CAD编辑3D模型 用FreeCAD打开模型 删除…

SpringSecurity(一)

【第一篇】SpringSecurity的初次邂逅 1.Spring Security概念 Spring Security是Spring采用 AOP思想&#xff0c;基于 servlet过滤器实现的安全框架。它提供了完善的认证机制和方法级的授权功能。是一款非常优秀的权限管理框架。 Spring Security是一个功能强大且高度可定制的身…

Linux——操作系统与进程的基础概念

操作系统与进程的基础概念 本章思维导图&#xff1a; 注&#xff1a;思维导图对应的.xmind和.png文件都已同步导入至资源 1. 操作系统&#xff08;OS&#xff09; 操作系统的基本概念&#xff1a; 操作系统(operator system)简称OS&#xff0c;是一个管理软硬件资源的软件 1.…

honle电源维修UV电源控制器EVG EPS40C-HMI

好乐UV电源控制器维修&#xff1b;honle控制器维修&#xff1b;UV电源维修MUC-Steuermodul 2 LΛmpen D-82166 主要维修型号&#xff1a; EVG EPS 60/120、EVG EPS 100、EVG EPS200、EVG EPS 220、EVG EPS 340、EVG EPS40C-HMI、EVG EPS60 HONLE好乐uv电源维修故障包括&#…

11K+ Star!图解计算机网络、操作系统、计算机组成、数据库!

大家好&#xff0c;我是 Java陈序员。 俗话说得好&#xff0c;面试造火箭&#xff0c;入职拧螺丝。我们在工作中&#xff0c;其实很少用到一些计算机底层知识&#xff0c;往往只要编码完事。但是&#xff0c;知其然还要知其所以然&#xff0c;我们不仅要做一个合格的“CV 工程…

luceda ipkiss教程 41:画跑道型微环

利用picazzo库中的方向耦合器绘制跑道型微环&#xff1a; from si_fab import all as pdk from ipkiss3 import all as i3 from picazzo3.wg.dircoup import StraightDirectionalCouplerclass RingResonator(i3.PCell):trace_template i3.TraceTemplateProperty(defaultpdk.Si…

[Geek Challenge 2023] klf_2详解

考点 SSTI、join拼接绕过 fuzz测试后发现过滤了很多关键字 我们先试试构造__class__ {% set podict(po1,p2)|join()%} //构造pop {% set alipsum|string|list|attr(po)(18)%} //构造_ {% set cl(a,a,dict(claa,ssa)|join,a,a)|join()%} //构造__class__ {% set …

『TypeScript』深入理解TypeScript基本类型及其应用

&#x1f4e3;读完这篇文章里你能收获到 掌握TypeScript的基本及高级数据类型掌握TypeScript的类型系统 文章目录 一、基本类型1. 类型声明2. 基本数据类型2.1 数字&#xff08;Number&#xff09;2.2 字符串&#xff08;String&#xff09;2.3 布尔值&#xff08;Boolean&…

YOLOv8改进 | 2023 | DiverseBranchBlock多元分支模块(有效涨点)

一、本文介绍 本文带来的改进机制是YOLOv8模型与多元分支模块&#xff08;Diverse Branch Block&#xff09;的结合&#xff0c;Diverse Branch Block (DBB) 是一种用于增强卷积神经网络性能的结构重新参数化技术。这种技术的核心在于结合多样化的分支&#xff0c;这些分支具有…

机器学习应用 | 使用 MATLAB 进行异常检测(上)

异常检测任务&#xff0c;指的是检测偏离期望行为的事件或模式&#xff0c;可以是简单地检测数值型数据中&#xff0c;是否存在远超出正常取值范围的离群值&#xff0c;也可以是借助相对复杂的机器学习算法识别数据中隐藏的异常模式。 在不同行业中&#xff0c;异常检测的典型…

Linux 文件写入报错E297: Write error in swap file

错误原因 Linux系统不能向文件写入内容&#xff0c;无论写入都无保存&#xff0c;并且提示下文信息 E297: Write error in swap file "abc.txt" [New File] Press ENTER or type command to continue 经过查找资料得知可能是磁盘满了。通过df -h命令查看磁盘情况…

互联网Java工程师面试题·RabbitMQ篇

目录 1、什么是 rabbitmq 2、为什么要使用 rabbitmq 3、使用 rabbitmq 的场景 4、如何确保消息正确地发送至 RabbitMQ&#xff1f; 如何确保消息接收方消费了消息&#xff1f; 5、如何避免消息重复投递或重复消费&#xff1f; 6、消息基于什么传输&#xff1f; 7、消息如…

新农村建设集中污水处理需要哪些设备

新农村建设集中污水处理是一个关乎环境保护和农村发展的重要议题。在实施该项目时&#xff0c;需要一系列专业设备来确保污水处理的高效性和可持续性。 首先&#xff0c;在新农村建设集中污水处理中&#xff0c;最基本的设备是污水收集系统。这包括地下管网、检查井和泵站等设施…

C++新经典模板与泛型编程:SFINAE特性的信息萃取

用成员函数重载实现is_default_constructible 首先介绍一个C标准库提供的可变参类模板std::is_default_constructible。这个类模板的主要功能是判断一个类的对象是否能被默认构造&#xff08;所谓默认构造&#xff0c;就是构造一个类对象时&#xff0c;不需要给该类的构造函数…

Linux 网络协议

1 网络基础 1.1 网络概念 网络是一组计算机或者网络设备通过有形的线缆或者无形的媒介如无线&#xff0c;连接起来&#xff0c;按照一定的规则&#xff0c;进行通讯的集合( 缺一不可 )。 5G的来临以及IPv6的不断普及&#xff0c;能够进行联网的设备将会是越来越多&#xff08…

12、组合模式(Composite Pattern,不常用)

组合模式&#xff08;Composite Pattern&#xff09;&#xff0c;有时又叫作部分-整体模式&#xff0c;它是一种将对象组合成树状的层次结构的模式&#xff0c;用来表示“部分-整体”的关系&#xff0c;使用户对单个对象和组合对象具有一致的访问性。 它在我们树型结构的问题中…