博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
卡特兰数,组合数,斯特林数,逆元模板
阅读量:5769 次
发布时间:2019-06-18

本文共 1131 字,大约阅读时间需要 3 分钟。

  直接上板子

const ll mod =(ll) 1e9+7;const int maxn = 2100001;ll f[maxn];int n;void init() {    f[0] = f[1] = 1;    for(int i = 2; i < maxn; i++) f[i] = (f[i-1] * i) % mod;}ll mul(ll x, ll n) {    ll ret = 1;    while(n) {        if(n & 1) ret = (ret * x) % mod;        n >>= 1;        x = (x * x) % mod;    }    return ret;}ll exgcd(ll a, ll b, ll &x, ll &y) {    if(b == 0) {        x = 1;        y = 0;        return a;    }    else {        ll ret = exgcd(b, a%b, x, y);        ll tmp = x;        x = y;        y = tmp - a / b * y;        return ret;    }}ll inv(ll a) {    ll x, y;    exgcd(a, mod, x, y);    return (x % mod + mod) % mod;}ll C(ll x, ll y) {    return f[x] * inv(f[x-y]) % mod * inv(f[y]) % mod;}ll Catalan(int n) {    return C(2*n, n) * inv(n+1) % mod;}ll s[maxn][maxn];void init2() {    mem0(s);    s[1][1] = 1;    for( int i = 2; i <= maxn-1; i++ ) {        for( int j = 1; j <= i; j++ ) {            s[i][j] = s[i-1][j-1]+j*s[i-1][j];            if( s[i][j] >= mod ) s[i][j] %= mod;        }    }}ll S(int n, int m) {    return f[m]*s[n][m]%mod;}
template

 

转载于:https://www.cnblogs.com/FriskyPuppy/p/7440972.html

你可能感兴趣的文章
使用@media实现IE hack的方法
查看>>
oracle体系结构
查看>>
Microsoft Exchange Server 2010与Office 365混合部署升级到Exchange Server 2016混合部署汇总...
查看>>
Proxy服务器配置_Squid
查看>>
【SDN】Openflow协议中对LLDP算法的理解--如何判断非OF区域的存在
查看>>
纯DIV+CSS简单实现Tab选项卡左右切换效果
查看>>
redis 常用命令
查看>>
EdbMails Convert EDB to PST
查看>>
android 资源种类及使用
查看>>
Centos7同时运行多个Tomcat
查看>>
使用CocoaPods过程中的几个问题
查看>>
我的友情链接
查看>>
为eclipse安装maven插件
查看>>
JAVA8 Stream 浅析
查看>>
inner join on, left join on, right join on要详细点的介绍
查看>>
SAS vs SSD对比测试MySQL tpch性能
查看>>
Spring boot 整合CXF webservice 全部被拦截的问题
查看>>
Pinpoint跨节点统计失败
查看>>
机房带宽暴涨问题分析及解决方法
查看>>
XP 安装ORACLE
查看>>