题意:
新兵蛋子按照两种报数规则报数:
1.1212报数,2出队
2.123123报数,3出队
没报完一轮,检查人数,不大于3,over
略坑,必须每报完一轮检查人数,最初,按照12两种顺序报完检查人数,WA了
#include#include #include #include #include using namespace std;queue Q;int main(){ int t; cin>>t; while (t--) { int n; cin>>n; for (int i=1; i<=n; i++) Q.push(i); while (Q.size() > 3) { int i; i = 1; Q.push(Q.front()); Q.pop(); while (Q.front() != 1) { i++; if (i % 2 == 0) { Q.pop(); } else { Q.push(Q.front()), Q.pop(); } } if (Q.size() <= 3) break;//每一轮数完,判断人数不够了就停止 i = 1; Q.push(Q.front()); Q.pop(); while (Q.front() != 1) { i++; if (i % 3 == 0) { Q.pop(); } else { Q.push(Q.front()), Q.pop(); } } } while (Q.front() != 1) {//调整顺序 Q.push(Q.front()), Q.pop(); } cout<