100人报数,数到3退出游戏_奥数100个人围成一圈报数3出-CSDN博客
admin
阅读:36
2024-04-09 00:42:21
评论:0
#include
#include
int main()
{
int n, m = 3; // m为数到几退出
printf("请输入参与游戏的人数: ");
scanf("%d", &n);
int* circle = (int*) malloc(n * sizeof(int)); // 动态分配数组
for (int i = 0; i < n; i++) {
circle[i] = i + 1; // 给每个人编号
}
int count = 0, index = 0, left = n; // count为报数,index为当前的位置,left为剩余的人数
while (left > 1) { // 当剩余人数大于1时继续游戏
if (circle[index] != 0) { // 如果当前位置还有人
count++; // 报数加1
if (count == m) { // 报数到m时,该人出局
circle[index] = 0; // 标记为出局
count = 0; // 重置报数
left--; // 剩余人数减1
}
}
index++; // 往下一个人走
if (index == n) { // 走到最后一个人后,从头开始
index = 0;
}
}
for (int i = 0; i < n; i++) { // 找出最后留下的那个人的编号
if (circle[i] != 0) {
printf("最后留下的人的编号是: %d
", circle[i]);
break;
}
}
free(circle); // 释放动态分配的内存
return 0;
}
本文 zblog模板 原创,转载保留链接!网址:https://gulangwanhotelxiamen.com/post/4633.html