zoukankan      html  css  js  c++  java
  • kickstart_2018_round_H_C Let Me Count The Ways

    思路:

    容斥。

    实现:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const ll MOD = 1e9 + 7;
     5 const int MAXN = 200000;
     6 ll f[MAXN + 5], inv[MAXN + 5];
     7 ll pow(ll a, ll b)
     8 {
     9     ll res = 1;
    10     while (b)
    11     {
    12         if (b & 1)
    13             res = res * a % MOD;
    14         b >>= 1;
    15         a = a * a % MOD;
    16     }
    17     return res;
    18 }
    19 
    20 void init()
    21 {
    22     f[0] = 1;
    23     for (int i = 1; i <= MAXN; i++) f[i] = f[i - 1] * i % MOD;
    24     inv[MAXN] = pow(f[MAXN], MOD - 2);
    25     for (int i = MAXN - 1; i >= 0; i--) inv[i] = inv[i + 1] * (i + 1) % MOD;
    26 }
    27 
    28 ll C(int a, int b)
    29 {
    30     return f[a] * inv[b] % MOD * inv[a - b] % MOD;
    31 }
    32 
    33 int main()
    34 {
    35     init();
    36     int T, n, m;
    37     cin >> T;
    38     for (int i = 1; i <= T; i++)
    39     {
    40         cin >> n >> m;
    41         ll ans = 0, s = 1, bin = 1;
    42         for (int i = 0; i <= m; i++)
    43         {
    44             ans = (ans + s * C(m, i) * bin % MOD * f[2 * n - i] % MOD) % MOD;
    45             s *= -1;
    46             bin = bin * 2 % MOD;
    47         }
    48         cout << "Case #" << i << ": " << (ans + MOD) % MOD << endl;
    49     }
    50     return 0;
    51 }
  • 相关阅读:
    Redis杂谈
    General mistakes in parallel computing
    life of a NPTL pthread
    casting in C++
    function calling convention
    How exception works ?
    How `delete’ works ?
    How `new’ operator works ?
    老白的JAVA课程17 集合
    老白的JAVA课程16 卡片布局 javaBean
  • 原文地址:https://www.cnblogs.com/wangyiming/p/10054982.html
Copyright © 2011-2022 走看看