5.18 Vj A - Phoenix and Balance

#include<bits/stdc++.h>
#define ll long long
using namespace std;
//让最大的数和前面n/2-1个较小的数加和,再减去剩下的数,就是答案
int  main( )
{
    int t,n,k=0;
    cin>>t;
    int a[t];
    for(int i=0;i<t;i++)
    {
        cin>>n;
        int b=2;
        ll s=0,z=0;//s是结果较大的组合,z是结果较小的组合
        for(int j=0;j<n-1;j++)//最大的数直接在最后与s加和
        {
            if(j<n/2-1)
            {
                s+=b;
            }
            else{
                z+=b;
            }
            b*=2;
        }
        s+=b;
        a[k]=s-z;
        k++;
    }
    for(int i=0;i<t;i++)
    {
        cout<<a[i]<<endl;
    }
    return 0;
}
posted @ 2020-05-18 11:21  SyrupWRLD  阅读(106)  评论(0)    收藏  举报