fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. const int maxN=2e5;
  6. int N;
  7. vector<int> v;
  8.  
  9. int main() {
  10. cin>>N;
  11. for(int i=1;i<=N;i++)
  12. v.push_back(i);
  13.  
  14. while( v.size()>1 ){
  15. vector<int> survive;
  16.  
  17. for(int i=0;i<v.size();i++){
  18. if( i%2==1 )
  19. cout<<v[i]<<' ';
  20. else survive.push_back(v[i]);
  21. }
  22. int L=v.size();
  23. v.clear();
  24. // 原本有奇數個 -> 從最後一個生存者當作新起點
  25. if( L%2==1 ){
  26. //cout<<survive.back();
  27. v.push_back( survive.back() );
  28. survive.pop_back();
  29. }
  30. for(int i:survive)
  31. v.push_back(i);
  32. }
  33. cout<<v.front();
  34. }
Success #stdin #stdout 0.01s 5460KB
stdin
10
stdout
2 4 6 8 10 3 7 1 9 5