#include<iostream>
#include<vector>
using namespace std;
#define MAXR 1030
int f_length(int a)
{
int r=1;
while(a/2!=0)
{
r++;
a=a/2;
}
return r;
}
int main()
{
int T,i;
cin>>T;
for(i=1;i<=T;i++)
{
int n,j,k,maxn;
cin>>n;
maxn=(1<<n)-1;//这个就是很多个111111111
int dp[MAXR];
memset(dp,0,sizeof(dp));//初始化全为0
dp[0]=1;
/*递推方程是看懂了,但是就是对如何循环有点不太熟练
显然这个最后的结果就是求111111111的情况
*/
/*
这里呢就是实现一个功能连加所有的可能性
*/
for(j=1;j<=maxn;j++)
{
int length=f_length(j);
for(k=0;k<length;k++)
{
if((j&(1<<k))!=0)
{
dp[j]=dp[j]+dp[j&~(1<<k)];
}
}
}
cout<<"Case #"<<i<<" :";
cout<<dp[maxn]<<endl;
}
return 0;
}
#include<vector>
using namespace std;
#define MAXR 1030
int f_length(int a)
{
int r=1;
while(a/2!=0)
{
r++;
a=a/2;
}
return r;
}
int main()
{
int T,i;
cin>>T;
for(i=1;i<=T;i++)
{
int n,j,k,maxn;
cin>>n;
maxn=(1<<n)-1;//这个就是很多个111111111
int dp[MAXR];
memset(dp,0,sizeof(dp));//初始化全为0
dp[0]=1;
/*递推方程是看懂了,但是就是对如何循环有点不太熟练
显然这个最后的结果就是求111111111的情况
*/
/*
这里呢就是实现一个功能连加所有的可能性
*/
for(j=1;j<=maxn;j++)
{
int length=f_length(j);
for(k=0;k<length;k++)
{
if((j&(1<<k))!=0)
{
dp[j]=dp[j]+dp[j&~(1<<k)];
}
}
}
cout<<"Case #"<<i<<" :";
cout<<dp[maxn]<<endl;
}
return 0;
}