题目链接
队列模拟
#include<algorithm>
#include<iostream>
#include<set>
#include<cstring>
#include<cstdio>
#include<stack>
#include<queue>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
queue<int> q;
for(int i=1;i<=n;i++){
q.push(i);
}
int k=1; //k为奇数进行12,偶数进行13
while(q.size()>3){
if(k&1){
int size=q.size();
for(int i=0;i<size/2;i++){
int a=q.front();
q.push(a);
q.pop();
q.pop();
}
if(size&1){
int a=q.front();
q.push(a);
q.pop();
}
}else{
int size=q.size();
for(int i=0;i<size/3;i++){
int a=q.front();
q.push(a);
q.pop();
int b=q.front();
q.push(b);
q.pop();
q.pop();
}
while(size%3!=0){
size--;
int a=q.front();
q.push(a);
q.pop();
}
}
k++;
}
while(q.size()!=1)//输出,这样是为了控制格式...
{
printf("%d ",q.front());
q.pop();
}
printf("%d\n",q.front());
}
}