A - 士兵队列训练问题
代码如下:
#include<iostream> using namespace std; int main() { int n,h,i,j,k; int a[5002]={0}; cin>>n; while(n--) { cin>>h; k=h; for(i=1;i<=h;i++) a[i]=i; while(k>3) { j=0; for(i=1;i<=h;i++) { if(a[i]==0) continue; else j++; if(j==2) { a[i]=0; j=0; } } k-=k/2; if(k<=3) break; j=0; for(i=1;i<=h;i++) { if(a[i]==0) continue; else j++; if(j==3) { a[i]=0; j=0; } } k-=k/3; } for(i=1;i<=h;i++) { if(a[i]==0) continue; else { k--; if(k>0) printf("%d ",a[i]); else printf("%d\n",a[i]); } } } return 0; }