模版-组合数带取模
发布日期:2021-05-13 02:07:33 浏览次数:17 分类:博客文章

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

#include 
typedef long long ll;const int N = 100005; // 最大能计算的n上限const int MOD = 1000000007; // 1e9 + 7ll fac[N]; // 用于存储阶乘结果ll qpow(ll a, ll b) { // 快速幂 ll res = 1, base = a; while (b) { if (b & 1) res = res * base % MOD; base = base * base % MOD; b >>= 1; } return res;}void init() { fac[0] = 1; for (int i = 1; i < N; i++) { fac[i] = fac[i - 1] * i % MOD; }}ll cal(ll n, ll m) { if (n < m) return 0; return 1LL * fac[n] * qpow(fac[m], MOD - 2) % MOD * qpow(fac[n - m], MOD - 2) % MOD;}int main() { init(); int n; scanf("%d", &n); for (int i = 0; i < n; i++) { ll n, m; scanf("%lld %lld", &n, &m); ll res = cal(n, m); printf("%lld\n", res); } return 0;}
上一篇:CF1462-E2. Close Tuples (hard version)
下一篇:CF1462-E1. Close Tuples (easy version)

发表评论

最新留言

很好
[***.229.124.182]2025年04月28日 19时10分12秒