队列
Description
Input
Output
Sample Input
Sample Output
#include <iostream>
#include <string>
using namespace std;
int main()
{
int T;
int a[5005];
cin>>T;
while(T--)
{
int n,i;
cin>>n;
for(i=0;i<n;i++)
a[i]=i+1;
int sum=n;
if(n<=3)
{
if(n==1)
cout<<1<<endl;
if(n==2)
cout<<1<<" "<<2<<endl;
if(n==3)
cout<<1<<" "<<2<<" "<<3<<endl;
continue; //直接 结束这组案例
}
while(1)
{
int flag=0;
for(i=0;i<n;i++)
{
if(a[i]) //判断a[i]为不为零
flag++; //计数
if(flag==2) //等于2就将报数为2的数变0
{
flag=0;
a[i]=0;
sum--; //表示剩下的人数,及不为零的数
}
}
if(sum<=3)
break;
flag=0;
for(i=0;i<n;i++)
{
if(a[i])
flag++;
if(flag==3)
{
flag=0;
a[i]=0;
sum--;
}
}
if(sum<=3)
break;
flag=0;
}
cout<<1;
sum--;
for(i=1; ;i++)
{
if(a[i])
{
cout<<" "<<a[i];
sum--;
}
if(!sum)
break;
}
cout<<endl;
}
return 0;
}