思想:
第一次出列:踢出1,3,5,7 其二进制为1,11,101,111 可以发现其末尾都为1
第二次出列:踢出2,6 其二进制为10,110 可以发现其以10结尾
综上,我们可以知道第i次出列,即踢出以i个0结尾的数,或者说以(1<<(i-1))结尾的数
最后只剩下(1<<k(最后一次,此处为2)))
#include<iostream>
using namespace std;
int main() {
int n; cin >> n;
int v = 0;
while ( ( 1 << v ) <= n ) {
v++;
}
cout << ( 1 << ( v - 1 ) );
}