• 82: 模拟赛-校验码 容斥


    $des$

    $sol$

    由于二进制的每一位都是独立的

    所以将题意转化为

    $n imes m$ 的矩形填入 $0/1$,使得每行每列都至少有一个$1$ 的方案数

    考虑对行进行容斥

    Answer = 全部的(每列至少一黑) - 有一行全白(每列至少一黑)+ 有两行全白(每列至少一黑) + cdots

    即 $$Answer = sum_{k = 0} ^ {n} (-1) ^ k (2 ^ {n - k} - 1) ^ m$$

    这样求出的答案的位数次方就是此题的答案

    $code$

    #include <iostream>
    #include <cstring>
    #include <cmath>
    #include <cstdio>
    #include <algorithm>
    #include <queue>
    
    using namespace std;
    
    #define LL long long
    #define Rep(i, a, b) for(LL i = a; i <= b; i ++)
    
    const int N = 60;
    const LL Mod = 1e9 + 7;
    
    LL n, m, k_;
    
    namespace $ {
        LL fac[N], ifac[N];
        LL Ksm(LL a, LL b) {
            LL ret = 1;
            while(b) {
                if(b & 1) ret = ret * a % Mod;
                a = a * a % Mod;
                b >>= 1;
            }
            return ret;
        }
        void Per() {
            fac[0] = 1;
            Rep(i, 1, 55) fac[i] = fac[i - 1] * i % Mod;
            ifac[55] = Ksm(fac[55], Mod - 2);
            for(int i = 55; i >= 1; i --) ifac[i - 1] = ifac[i] * i % Mod;
        }
        LL C(LL x, LL y) {
            return fac[x] * ifac[y] % Mod * ifac[x - y] % Mod;
        }
        
        LL Calc() {
            LL ans = 0;
            Rep(k, 0, n) {
                if(k % 2 == 0)ans = (ans + C(n, k) * Ksm((Ksm(2, n - k) - 1 + Mod) % Mod, m)) % Mod;
                else ans = (ans - C(n, k) * Ksm((Ksm(2, n - k) - 1 + Mod) % Mod, m) % Mod + Mod) % Mod;
            }
            return Ksm(ans, k_);
        }
    }
    
    int main() {
        $:: Per();
        int t;
        cin >> t;
        Rep(tt, 1, t) {
            cin >> n >> m >> k_;
            cout << $:: Calc() << '
    ';    
        }
        return 0;    
    }
  • 相关阅读:
    PostgreSQL-14-异常值处理
    Python-5-字符串方法
    Python-6-字典-函数dict,字典的基本操作及将字符串设置功能用于字典
    STP-6-快速生成树协议-新端口角色,状态和类型以及新链路类型
    PostgreSQL-13-缺失值处理
    IP服务-6-SNMP
    IP服务-7-系统日志
    Python-4-设置字符串的格式字符串
    IP服务-5-网络时间协议
    Python -3-列表和元组
  • 原文地址:https://www.cnblogs.com/shandongs1/p/9850030.html
Copyright © 2020-2023  润新知