桌上有一叠牌,从顶面的牌开始往底面依次编号为 1~n。当至少还剩两张牌时进行以下操作:把第一张扔掉,然后把新的第一张放到整叠牌的最后。
Input
输入一个正整数 n,2<=n≤1000000,表示起始时牌的张数
Output
输出一行,按顺序输出每次扔掉的牌的编号,最后输出最后剩下的牌的编号,两个数之间用一个空格隔开。
Sample Input
7
Sample Output
1 3 5 7 4 2 6
#include<iostream>
#include<queue>
using namespace std;
int main(){
int n;
queue<int>q;
cin>>n;
for(int i=1;i<=n;i++)
q.push(i); //在末尾加入一个元素 i
while(!q.empty()){ //如果队列不为空则返回真
cout<<q.front()<<" "; //输出返回的第一个元素,紧接一个空格
q.pop(); //删除队列的第一个元素
int front=q.front(); //返回新的第一个元素并赋予
q.pop(); //删除队列的第一个元素
q.push(front); //把新的第一张放到整叠牌的最后
}
return 0;
}