• UVA 11806 组合数学+容斥


    UVA: https://vjudge.net/problem/UVA-11806

    AC代码

    #include <bits/stdc++.h>
    #define pb push_back
    #define mp make_pair
    #define fi first
    #define se second
    #define all(a) (a).begin(), (a).end()
    #define fillchar(a, x) memset(a, x, sizeof(a))
    #define huan printf("
    ")
    #define debug(a,b) cout<<a<<" "<<b<<" "<<endl
    #define ffread(a) fastIO::read(a)
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pii;
    //const int maxn=1e4+10;
    const ll mod=1e6+7;
    const int maxn = 1010;
    int C[maxn][maxn];
    int n, m, k;
    
    void init()
    {
        C[0][0] = 1;
        for (int i = 1; i < maxn; i++)
        {
            C[i][0] = 1;
            for (int j = 1; j <= i; j++)
                C[i][j] = (C[i - 1][j - 1] + C[i - 1][j]) % mod;
        }
    }
    int main()
    {
        int t,kase=1;
        init();
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d%d",&m,&n,&k);
            int ans=C[n*m][k];
            ans=(ans-2*C[(m-1)*n][k]%mod+mod)%mod;
            ans=(ans-2*C[(n-1)*m][k]%mod+mod)%mod;
            ans=(ans+4*C[(n-1)*(m-1)][k])%mod;
            ans=(ans+C[(n-2)*m][k])%mod;
            ans=(ans+C[(m-2)*n][k])%mod;
            ans=(ans-2*C[(n-2)*(m-1)][k]%mod+mod)%mod;
            ans=(ans-2*C[(m-2)*(n-1)][k]%mod+mod)%mod;
            ans=(ans+C[(m-2)*(n-2)][k])%mod;
            printf("Case %d: %d
    ",kase++,ans);
        }
    }

     

  • 相关阅读:
    入门指引之永久素材
    入门指引之上传临时素材
    入门指引之查看accesstoken
    java中的左移 右移
    病狗问题
    leetcode 几何题 位运算 面试编程
    CNN网络参数
    python学习整理
    JAVA问题整理
    计算机网络整理
  • 原文地址:https://www.cnblogs.com/stranger-/p/9812200.html
Copyright © 2020-2023  润新知