有N个小朋友围成一圈玩击鼓传花游戏,将小朋友编号为1-N,从1号开始传花,每次传3个,拿到花的小朋友表演节目后退出。任给N,问最后一个表演的小朋友编号是多少?例如:输入5,从1号开始传花,第一个表演的是3号,第二个表演的是1号,第三个表演的是5号,第四个表演的是2号,最后一个表演的是4号。 代码 #include <cstdio> #include <queue> using namespace std; int main() {queue<int> kid;//孩子队列存储的是孩子的编号int n;scanf_s("%d", &n);for (int i = 0; i < n; ++i) {kid.push(i + 1);//确定传花队列}//开始传花int num = 1;while (true) {int cur = kid.front();//获取队首孩子的编号kid.pop();if (num == 3) {num = 1;if (kid.empty()) {//如果是最后一个孩子printf("%d\n", cur);break;}else {printf("%d ", cur);//还有孩子没有确定表演序号}}else {num++;kid.push(cur);}}printf("最后表演的小朋友编号为:");printf("%d\n", kid.front()); } 运行结果: