P7018题解

· · 题解

题面

本题其实就是一个逆推。我们设 a_i 表示到达第 i 站后还剩下的人数,由题可得,a_k=0。依然由题可得:

\frac{a_i-1}{2}=a_{i+1}

所以,我们可以得出:

a_i=a_{i+1}\times 2+1

代码

#include<bits/stdc++.h>
using namespace std;
int t,n,ans;
int main()
{
    cin>>t;
    while(t--){
        cin>>n;
        ans=0;//已知a[k]=0
        while(n--)ans=ans*2+1;//逆推
        cout<<ans<<endl;
    }
    return 0;
}