Two ways to play the game are considered different if the final pictures are different. In other words, if one way contains a rectangle that is not contained in the other way.
In the first sample Anna, who performs her first and only move, has only one possible action plan — insert a 1?×?1 square inside the given3?×?3 square.
In the second sample Anna has as much as 9 variants: 4 ways to paint a 1?×?1 square, 2 ways to insert a 1?×?2 rectangle vertically, 2 more ways to insert
it horizontally and one more way is to insert a 2?×?2 square.
横竖可以分开来看
对于长度为M的棍来说 取K次相当于C(m-1,2*k)
取k次需要2*k个点
而点不能包括短点 (长度为M有M+1个点)
代码:
#include<cstdio>
#include<cstring>
const int mod=1000000007;
long long ans[1010][1010];
int main()
{
int i,j;
ans[0][0]=1;
for(i=0;i<1010;i++)
{
ans[i][i]=ans[i][0]=1;
for(j=1;j<i;j++)
{
ans[i][j]=(ans[i-1][j-1]+ans[i-1][j])%mod;
}
}
int n,m,k;
printf("%d",sizeof(ans));
while(scanf("%d %d %d",&n,&m,&k)!=EOF)
{
printf("%lld\n",(ans[n-1][2*k]*ans[m-1][2*k])%mod);
}
return 0;
}