UVA 11806 Cheerleaders——计数原理

来源:互联网 发布:微信网络诈骗 编辑:程序博客网 时间:2024/05/29 12:32
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int maxn = 505;const int mod = 1e6 + 7;int C[maxn][maxn];int main() {    memset(C, 0, sizeof(C));    C[0][0] = 1;    for (int i = 0; i <= 500; i++) {        C[i][0] = C[i][i] = 1;        for (int j = 1; j < i; j++) {            C[i][j] = (C[i-1][j] + C[i-1][j-1]) % mod;        }    }    int T; scanf("%d", &T);    for (int kase = 1; kase <= T; kase++) {        int n, m, k; scanf("%d %d %d", &n, &m, &k);        int sum = 0;        for (int i = 0; i < 16; i++) {            int cnt = 0, r = n, c = m;            if (i & 1) { r--; cnt++; }            if (i & 2) { r--; cnt++; }            if (i & 4) { c--; cnt++; }            if (i & 8) { c--; cnt++; }            if (cnt & 1) { sum = (sum + mod - C[r*c][k]) % mod; }            else { sum = (sum + C[r*c][k]) % mod; }        }        printf("Case %d: %d\n", kase, sum);    }    return 0;}

原创粉丝点击