#include<stdio.h>
long long zh(int k,int j);
int main()
{
//本题采用递推关系求错排数,所以要先定义一个数组,且必须是long long 类型
int i;
long long a[26]={1.0}; //9
for(i=2;i<14;i++)
{
a[i]=(i-1)*(a[i-1]+a[i-2]);
}
int n;
while(scanf("%d",&n)!=EOF&&n)
{
long long total=0;
for(i=2;i<=n/2;i++)
{
total+=zh(n,i)*a[i];
}
printf("%lld\n",total+1);
}
return 0;
}
//求组合数
long long zh(int k,int j) //C(k,j)
{
long long x=1;
for(int p=1;p<=j;p++)
x=x*(k-p+1)/p;
return x;
}
2068 RPG的错排(杭电)
最新推荐文章于 2022-02-25 20:00:37 发布