题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1292
#include<stdio.h>
int main()
{
int t,n,i,j;
__int64 a[26][26];
a[1][1]=1;
a[1][0]=0;
for (i=2;i<=25;i++)//i代表现在总共几个人分组
{
a[i][1]=1; a[i][i]=1;
for (j=2;j<i;j++)//j代表分成几组,
a[i][j]=a[i-1][j-1]+a[i-1][j]*j;//把所有分组的情况加在一起就是分组的所有情况
}
scanf("%d", &t);
while (t--)
{
scanf("%d",&n);
__int64 sum=1;
for (i=2;i<=n;i++)
sum+=a[n][i];
printf("%I64d\n",sum);
}
return 0;
}