📄 a.cpp
字号:
#include<cstdio>
#include<cstring>
const int MAXN=1023;
const int MOD=2011;
int r[MAXN],h[MAXN],q[MAXN],m[MAXN],d[MAXN];
int R(int n)
{
return r[n]?r[n]:r[n]=(R(n-1)*n)%MOD;
}
int H(int n)
{
if(h[n])
return h[n];
if(n%2==0)
return h[n]=(n*H(n-2))%MOD;
return h[n]=H(n-1);
}
int Q(int n)
{
switch(n%4)
{
case 0:
return h[n]?h[n]:h[n]=((n-2)*Q(n-4))%MOD;
case 1:
return Q(n-1);
case 2:
return 0;
case 3:
return 0;
}
}
int M(int n)
{
return m[n]?m[n]:m[n]=(M(n-1)+(n-1)*M(n-2))%MOD;
}
int D(int n)
{
if(d[n])
return d[n];
if(n%2==0)
return d[n]=(2*D(n-2)+(n-2)*D(n-4))%MOD;
return d[n]=D(n-1);
}
int main()
{
memset(r,0,sizeof(r));r[0]=1;
memset(h,0,sizeof(h));h[0]=1;
memset(q,0,sizeof(q));q[0]=1;
memset(m,0,sizeof(m));m[0]=m[1]=1;
memset(d,0,sizeof(d));d[0]=d[2]=1;
int n;
// freopen("ACP.in","r",stdin);
// freopen("ACP.out","w",stdout);
while(scanf("%d",&n)!=EOF)
printf("%d %d %d %d %d\n",R(n),H(n),Q(n),M(n),D(n));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -