首页 > 代码库 > 士兵队列
士兵队列
#include<cstdio>
#include<iostream>
using namespace std;
const int N=5005;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,a[N]={0};
scanf("%d",&n);
int n1=n,m=2,j,i;
while(n1>3)
{
for(i=1,j=1;i<=n;i++)
{
if(!a[i])
{
if(j%m==0)
{
a[i]++;
n1--;
}
j++;
}
// cout<<i<<‘\t‘<<j<<‘\t‘<<n1<<‘\t‘<<m<<endl;
}
m=(m==2?3:2);
}
for(i=1;i<=n;i++)
if(!a[i])
{
n1--;
if(n1==0)break;
printf("%d ",i);
}
printf("%d\n",i);
}
return 0;
}
心得:
测试代码,错误代码先不要删注释掉,因为后面可能还需要用到前面的
士兵队列