士兵队列训练问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1276
1.注意要写出输入1~3的情况
2.当num==2或者等于3的时候,记得将num赋值为0;
AC代码:
#include<iostream> using namespace std; const int N=5050; int main() { int t,j,m; cin>>t; while (t--) { int n; cin>>n; int a[N]; for (int i=1;i<=n;i++) a[i]=1; int total=n,m=2,j=0; if (n<=3) { if (n==1) cout << "1" << endl; else if (n==2) cout << "1" << ' ' << "2" << endl; else if (n==3) cout << "1" << ' ' << "2" << ' ' << "3" << endl; } else { for (int i=1;i<=n;i++) { if (a[i]==1) { j++; if (j==m) { a[i]=0; j=0; } } if (i==n) { total-=(total/m); if (total<=3) break; if(m==2) m=3; else m=2; i=0; j=0; } } int w=0; for (int i=1;i<=n;i++) if (a[i]==1) { w++; cout << i ; if (w<total) cout << ' '; else cout << endl; } } } return 0; }