首页 > 其他 > 详细

组合数带取模模版

时间:2020-12-21 15:05:40      阅读:18      评论:0      收藏:0      [点我收藏+]

这个板子是网上搜到的,稍微改了改,里面用到了逆元,不是是很熟,将来有机会一定弄明白 ??

#include <cstdio>

const int N = 1e5 + 5;
const int mod = 1e9 + 7;
typedef long long ll;

ll f[N];

ll qpow(ll a, ll b) {
    ll ans = 1, base = a;
    while (b) {
        if (b & 1) ans = ans * base % mod;
        base = base * base % mod;
        b >>= 1;
    }
    return ans;
}

void init() {
    f[0] = 1;
    for (int i = 1; i <= 2e5; i++) {
        f[i] = f[i - 1] * i % mod;
    }
}

ll cal(ll n, ll m) {
    if (n < m) return 0;
    return 1ll * f[n] * qpow(f[m], mod - 2) % mod * qpow(f[n - m], mod - 2) % mod;
}

组合数带取模模版

原文:https://www.cnblogs.com/chantmee/p/14167344.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!