比赛 |
不准粘代码,必须自己写(HS除外) |
评测结果 |
AAAAAAAAAA |
题目名称 |
中国象棋 |
最终得分 |
100 |
用户昵称 |
leon |
运行时间 |
0.194 s |
代码语言 |
C++ |
内存使用 |
22.50 MiB |
提交时间 |
2019-09-25 18:50:31 |
显示代码纯文本
- #include<bits/stdc++.h>
- using namespace std;
- const int maxn=105;
- const int mod=9999973;
- long int f[maxn][maxn][maxn];
- int C(int x){
- return ((x*(x-1))/2)%mod;
- }
- int main(){
- freopen("cchess.in","r",stdin);
- freopen("cchess.out","w",stdout);
-
- int m,n;
- cin>>n>>m;//m_hang
- f[0][0][0]=1;
- for(int i=1;i<=n;i++)
- for(int j=0;j<=m;j++)
- for(int k=0;k<=m-j;k++){
- f[i][j][k]=f[i-1][j][k];
- if(k>=1)
- f[i][j][k]+=f[i-1][j+1][k-1]*(j+1);
- if(j>=1)
- f[i][j][k]+=f[i-1][j-1][k]*(m-j+1-k);
- if(k>=2)
- f[i][j][k]+=f[i-1][j+2][k-2]*C(j+2);
- if(k>=1)
- f[i][j][k]+=f[i-1][j][k-1]*j*(m-j-k+1);
- if(j>=2)
- f[i][j][k]+=f[i-1][j-2][k]*C(m-j-k+2);
- f[i][j][k]%=mod;
- }
- long long ans=0;
- for(int i=0;i<=m;i++)
- for(int j=0;j<=m;j++){
- ans+=f[n][i][j];
- ans%=mod;
- }
- cout<<ans;
- return 0;
- }
-
-