FZU2282-组合数-逆元
2017-08-09 23:04
369 查看
题目链接
#include <iostream> #include <queue> #include <functional> using namespace std; typedef long long LL; const int MOD = 1e9 + 7; const int maxn = 10010; LL pre[maxn], fac[maxn]; LL t, n, k; void init() { pre[0] = 1, pre[1] = 0, pre[2] = 1; fac[1] = 1, fac[2] = 2; for (int i = 3; i <= 10010; i++) { pre[i] = (((i - 1) % MOD*(pre[i - 1] + pre[i - 2]) % MOD)) % MOD; fac[i] = ((fac[i - 1] % MOD)*(i%MOD)) % MOD; } } LL qpow(LL a, LL x) { LL res = 1; while (x) { if (x & 1) { res = (res * a) % MOD; } a = (a * a) % MOD; x >>= 1; } return res; } LL C(LL n, LL k) { if (n < k) return 0; if (k > n - k) k = n - k; LL a = 1, b = 1; for (int i = 0; i < k; i++) { a = a*(n - i) % MOD; b = b*(i + 1) % MOD; } return a*qpow(b, MOD - 2) % MOD; } int main() { init(); cin >> t; while (t--) { cin >> n >> k; LL ans = 0; for (int i = 0; i < k; i++) { ans = ((ans%MOD) + (C(n, i)*pre[n - i]) % MOD) % MOD; } cout << (MOD + (fac % MOD) - (ans%MOD)) % MOD<<endl; } //system("pause"); }
相关文章推荐
- FZU -- 2282 和 DHU -- 2049 【简单错排 + 组合数学】
- 【Lucas定理 && C(n, m)%p && 逆元】FZU - 2020 组合
- FZU 2282 Wand(组合)
- fzu 2282(错位排列+逆元+快速幂函数)
- Fzu 2282 (错排 组合)
- FZU 2282 Wand 【组合数学】
- FZU - 2020 组合(逆元+卢卡斯)
- FZU 2020-组合(Lucas定理+逆元解决大组合数求模)
- FZU 2282 Wand (组合数学 错排应用)
- FZU 2020 组合
- hdu 5651 (组合数学 + 阶乘求逆元)
- FZU 2282 错排
- 51nod 1118 机器人走方格(组合数【逆元】,dp)
- fzu 2020 组合数取模
- Codeforces #313 (Div. 1) C. Gerald and Giant Chess dp 组合数 逆元
- 【51nod】--机器人走方格V2(组合数学&&逆元&&费马小定理)
- FZU 2020 组合 -- (大组合数取模 Lucas定理)
- FZU 2282 错排问题dp
- CodeForces 689E (离散化+逆元+组合)
- FZU 2282 错排