Josephus 问题
有 $n$ 个人围成一个圈,依次标号 $0$ 至 $n - 1$。从 $0$ 号开始,依次 $0 , 1 , 0 , 1 , \dots$ 交替报数,报到 $1$ 的人会离开,直至圈中只剩下一个人。求最后剩下人的编号。
试补全模拟程序。
#include <stdio.h>
using namespace std;
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 (int i = 0; i < n; i++)
        if (F[i] == 0)
            ans = i;
    printf("%d\n", ans);
    return 0;
}