A:Chat Group

题意:给出一个n, k 计算C(n, k) -> C(n,n) 的和

思路:k只有1e5 反过来想,用总的(2^ n) 减去 C(n, 0) -> C(n, k - 1), 预处理逆元,

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 #define ll long long
 6 #define N 100010
 7 
 8 const ll MOD = (ll)1e9 + 7;
 9 
10 int t;
11 ll n, k;
12 ll inv[N];
13 
14 inline void Init()
15 {
16     inv[1] = 1;
17     for (int i = 2; i < N; ++i) inv[i] = inv[MOD % i] * (MOD - MOD / i) % MOD;
18 }
19 
20 inline ll qpow(ll x, ll n)
21 {
22     ll base = x;
23     ll ans = 1;
24     while (n)
25     {
26         if (n & 1) ans = (ans * base) % MOD;
27         base = base * base % MOD;
28         n >>= 1;
29     }
30     return ans;
31 }
32 
33 int main()
34 {
35     Init();
36     scanf("%d", &t);
37     for (int kase = 1; kase <= t; ++kase)
38     {
39         scanf("%lld%lld", &n, &k);
40         printf("Case #%d: ", kase);
41         if (k > n)
42         {
43             puts("0");
44             continue;
45         }
46         ll ans = qpow(2, n);
47         ll tmp = 1;
48         for (int i = 0; i < k; ++i)
49         {
50             ans = (ans - tmp + MOD) % MOD;
51             tmp = tmp *  (n - i) % MOD * inv[i + 1] % MOD;
52         }
53         printf("%lld\n", ans);
54     }
55     return 0;
56 }
View Code

相关文章:

  • 2021-11-17
  • 2022-12-23
  • 2021-12-19
  • 2021-12-09
  • 2021-08-12
  • 2022-12-23
  • 2021-05-16
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-13
  • 2021-12-19
  • 2022-12-23
  • 2021-09-10
相关资源
相似解决方案