(Josephus问题)有n个人围城一个圈,依次标号0
(Josephus问题)有n个人围城一个圈,依次标号0至n-1。从0号开始,依次0,1,0,1,...交替报数,报到1的人会离开,直至圈中只剩下一个人。求最后剩下人的编号。
试补全模拟程序。
#include <stdio.h>
const int MAXN = 1000000;
int F[MAXN];
int main() {
int n;
scanf("%d", &n);
int i =0, p = 0, c = 0;
while (①) {
if (F[i] == 0) {
if (②) {
F[i] = 1;
③;
}
④;
}
⑤;
}
int ans = -1;
for (i = 0; i < n; i++)
if (F[i] == 0)
ans = i;
printf("%d\n", ans);
return 0;
}④处应填( )
答案
D