刚开始想的很复杂,想把退出圈子的后面一个一个往前移,结果总是不对,参考别人的代码,把退出那个人置为0,方便的多,脑子还是得灵活一点
#include<stdio.h>
int main() {
int n;
scanf_s("%d", &n);
int a[100];
for (int i = 0; i < n; i++) {
a[i] = i + 1;
}
int len = n;
int i = 0;
int p=0;//记3
while (len!=1) {
if (a[i]) {
p++;
}
if (p==3){
p = 0;
a[i] = 0;
len--;
}
i++;
if (i == n) {
i = 0;
}
}
for (int j = 0; j < n; j++) {
if (a[j]!=0) {
printf("%d", a[j]);
}
}
}