1 /*月之数 
 2 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
 3 Total Submission(s) : 1   Accepted Submission(s) : 1
 4 Font: Times New Roman | Verdana | Georgia 
 5 Font Size: ← →
 6 Problem Description
 7 当寒月还在读大一的时候,他在一本武林秘籍中(据后来考证,估计是计算机基础,狂汗-ing),发现了神奇的二进制数。
 8 如果一个正整数m表示成二进制,它的位数为n(不包含前导0),寒月称它为一个n二进制数。所有的n二进制数中,1的总个数被称为n对应的月之数。
 9 例如,3二进制数总共有4个,分别是4(100)、5(101)、6(110)、7(111),他们中1的个数一共是1+2+2+3=8,所以3对应的月之数就是8。
10 
11 Input
12 给你一个整数T,表示输入数据的组数,接下来有T行,每行包含一个正整数 n(1<=n<=20)。
13 
14 Output
15 对于每个n ,在一行内输出n对应的月之数。
16 
17 Sample Input
18 3
19 1
20 2
21 3
22 
23 Sample Output
24 1
25 3
26 8
27 */
28 #include<stdio.h>
29 int main()
30 {
31     int T;
32     scanf("%d",&T);
33     while(T--)
34     {
35         int s[21] , i , c[21] , n , p=1 , m;
36         scanf("%d",&n);
37         s[0] = 1;
38         if(n == 1 )
39         {
40             printf("%d\n",s[n-1]);
41             continue;
42         }
43         int sum =s[0];
44         for(i = 1 ;i < n;i++)
45         {
46             s[i]=sum+p*2;
47             sum=0;
48             for(m=0;m<=i;m++)
49             {
50                  sum=sum+s[m];
51             }
52             p*=2;
53         }
54         printf("%d\n",s[n-1]);
55     }
56     return 0;
57 }