/*
终态分析:最终有i个横排被翻了奇数次,j个纵排被翻了奇数次
*/
#include<bits/stdc++.h>
#define For(i,x,y)for(int i=(x);i<=(y);++i)
using namespace std;
const int M=3200,P=555555555;
int w,h,c,r,s,ans,C[M][M];
int d(int x,int y){//把x个数分给y组每组可以为0个
if(x&1)return 0;x>>=1;
return C[x+y-1][y-1];
}
int main(){
scanf("%d%d%d%d%d",&h,&w,&r,&c,&s);
For(i,0,3000){
C[i][0]=C[i][i]=1;
For(j,1,i-1)C[i][j]=(C[i-1][j-1]+C[i-1][j])%P;
}
For(i,0,h)For(j,0,w){
if(i*(w-j)+j*(h-i)!=s)continue;
ans=(ans+1LL*C[h][i]*C[w][j]%P*d(r-i,h)%P*d(c-j,w))%P;
}printf("%d",ans);
}
SRM556 Div1 555
最新推荐文章于 2017-07-10 15:04:49 发布