#include<stdio.h>
__int64 sum,f[30];
int main()
{
__int64 C_n_m(int n,int m);
int n;
int i;
f[0]=0; f[1]=0; f[2]=1;
for(i=3; i<=25; i++)
f[i]=(i-1)*(f[i-1]+f[i-2]);
while(~scanf("%d",&n))
{
__int64 sum=0;
if(n==0)
break;
else
{
for(i=0; i<=n/2; i++)
sum+=f[i]*C_n_m(n,i);
}
printf("%lld\n",sum+1);//当全部答对时f[0]=1,因此要加1.
}
return 0;
}
__int64 C_n_m(int n,int m)
{
__int64 i,up,down;//分子,分母
up=down=1;
for(i=n;i>=n-m+1;i--)
up*=i;
for(i=m;i>=1;i--)
down*=i;
return up/down;
}
杭电 2068 ( RPG的错排 ) 排列组合+错排
最新推荐文章于 2019-03-07 20:19:27 发布