题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2068
#include<iostream>
#include<cstdio>
using namespace std;
typedef unsigned long long ll;
ll f[30],a[30][30];
int main(){
for(int i=0;i<30;i++)
a[i][0]=a[i][i]=1;
for(int i=2;i<30;i++){
for(int j=1;j<i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
f[1]=0;f[2]=1;
for(int i=3;i<=26;i++){
f[i]=(i-1)*(f[i-1]+f[i-2]);
}
int n;
while(~scanf("%d",&n)){
if(n==0)
break;
ll sum=1;
int t=n/2;
for(int i=2;i<=t;i++){
sum+=a[n][i]*f[i];
}
printf("%I64d\n",sum);
}
return 0;
}