sol:容斥原理。。。ANS = C (row*col , k ) (row,col均是剩余的行和列~~~) >_<||
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=500;
const int MOD=1000007;
int C[maxn+10][maxn+10];
void init()
{
memset(C,0,sizeof(C));
C[0][0]=1;
for(int i=0;i<maxn;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 main()
{
init();
int T;
scanf("%d",&T);
for(int Icase=1;Icase<=T;Icase++)
{
int n,m,k,ans=0;
scanf("%d%d%d",&n,&m,&k);
for(int S=0;S<16;S++)
{
int b=0,row=n,col=m;
if(S&1) row--,b++;
if(S&2) row--,b++;
if(S&4) col--,b++;
if(S&8) col--,b++;
if(b&1) ans=(ans+MOD-C[row*col][k])%MOD;
else ans=(ans+C[row*col][k])%MOD;
}
printf("Case %d: %d\n",Icase,ans);
}
return 0;
}