首先,上手看图可以知道,在后面的两层,Winner的二进制表达都是 1 。
再看一下
所以我们就可以知道怎么做了。
那来看看这道题的标准些的解释,在第一层,即 1 与 2 相加,3 与 4 相加
那么就是选择小一点的数,即 1 和 3 ,5 ,7 之类的,可以看出来,第二层开始全都是奇数。
那么下面的每每两个数都是选择两个之间最大的那一个,直到第 n 层的Winner。
当层数为 n 时,我们按照第二层往后的两两最大的规律往前推到第一层,那么第 n 层的Winner应该来自第一层的最下面的一组
Winner
vs Winner
如果
时是奇数,那么小一点的数是 Winner
x+y
即 答案是
#include <bits/stdc++.h>
using namespace std;
#define il inline
#define INF 0x3f3f3f3f
#define cl(a, b) memset(a, b, sizeof(a))
typedef long long ll;
typedef unsigned long long ull;
int t, x;
int main()
{
scanf("%d", &t);
for (int kkz = 0; kkz < t; kkz++)
{
scanf("%d", &x);
printf("%d\n", (int)pow(2, x) - 1);
}
return 0;
}