题目描述
简单地进行一个模拟
C++ 代码
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 60;
typedef struct node{
int idx;
node* next;
}Node,*link;
int main(void){
int T;
scanf("%d",&T);
while(T--){
link head = new Node;
head->next = head;
link tail = head;
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++){
link tmp = new Node;
tmp->idx = i;
tmp->next = tail->next;
tail->next = tmp;
tail = tmp;
}
int cnt = 1;
link p = head->next;
link pre = head;
while(head->next!=head){
if(p == head){
p = head -> next;
pre = head;
continue;
}
if(cnt % 3 == 0){
cout<<p->idx<<" ";
link t = p;
pre->next = p->next;
p = p->next;
delete t;
cnt++;
continue;
}
pre = p;
p = p->next;
cnt++;
}
cout<<endl;
}
return 0;
}