#include #include #include using namespace std; int f(int n) { vector v(n); for(int i = 0; i < n; i++) { v[i] = i + 1; } int mile = 1; while((int) v.size() > 1) { int cnt = 1; vector tmp; if(mile == 1) { for(int i = 0; i < (int) v.size(); i++) { if(cnt % 2 == 1) { tmp.push_back(v[i]); } cnt++; } } else { for(int i = (int) v.size() - 1; i >= 0; i--){ if(cnt % 2 == 1) { tmp.push_back(v[i]); } cnt++; } reverse(tmp.begin(), tmp.end()); } v = tmp; if(mile == 1) { mile = 0; } else { mile = 1; } } return v[0]; } int main() { for(int i = 1; i <= 2000; i++) { cout << i << ": " << f(i) << endl; } return 0; }