用链表做的话很方便。。
刚开始理解错了,以为最后只能有三个人,WA了一次。
后来才发现小于等于3。
#include"stdio.h"
#include"string.h"
#define N 5004
int main()
{
int T;
int n;
int i,j,k;
int a[N];
int b[2];
b[0]=2;
b[1]=3;
int t;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=1;i<=n;i++)
a[i]=i;
t=n;
while(t>3)
{
for(i=0;i<2;i++)
{
for(j=1;j<=t;j++)
if(j%b[i]==0)
a[j]=-1;
for(j=1;j<=t;j++)
{
if(a[j]==-1)
{
for(k=j;k<t;k++)
{
a[k]=a[k+1];
}
t--;
}
}
if(t<=3)break;
}
}
for(i=1;i<t;i++)
printf("%d ",a[i]);
printf("%d\n",a[t]);
}
return 0;
}