**
**
这道题的话,我们先考虑一个规则的正方形的方案数,然后推广,把这个L形的图拆成两半,再考虑一下第一部分对第二部分的限制就行了。
代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mo=1e5+3;
ll cc[2001][2001],jie[2001],ans;
int a,b,c,d,k,n;
int main()
{
freopen("car.in","r",stdin);
freopen("car.out","w",stdout);
cin>>a>>b>>c>>d>>k;
n=max(a+c,max(b,d));
cc[0][0]=1;
cc[1][1]=1;
jie[0]=1;
for(int i=1;i<=n;i++)
cc[i][0]=1,jie[i]=jie[i-1]*i%mo;
for(int i=2;i<=n;i++)
{
for(int j=1;j<=i;j++)
cc[i][j]=(cc[i-1][j]+cc[i-1][j-1])%mo;
}
for(int i=0;i<=k;i++)
{
int j=k-i;
// if(i>min(a,b)||j>min(a+c-i,d)) continue;
ans=ans+((cc[a][i]*cc[b][i]*jie[i])%mo)*((cc[a+c-i][j]*cc[d][j]*jie[j])%mo);
ans%=mo;
}
cout<<ans;
return 0;
}