题目链接:https://vjudge.net/problem/UVA-11806
#include<string.h>
#include<stdio.h>
#include<algorithm>
using namespace std;
const int mod=1e6+7;
const int M = 510;
int C[M][M];
int main()
{
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,sum=0;
scanf("%d%d%d",&n,&m,&k);
for(int s=0;s<16;s++)
{
int b=0,r=n,c=m;
if(s&1) r--,b++;
if(s&2) r--,b++;
if(s&4) c--,b++;
if(s&8) c--,b++;
if(b&1) sum=(sum+mod-C[r*c][k])%mod;
else sum=(sum+C[r*c][k])%mod;
}
printf("Case %d: %d\n",kase,sum);
}
}