1078. [CSP2021 入门级] 第 34 题

[CSP2021 入门级] 第 34 题

三、完善程序(单选题,每小题 33 分,共计 3030 分)

(11)(Josephus 问题) 有 nn 个人围成一个圈,依次标号 00 至 n−1n - 1。从 00 号开始,依次 0,1,0,1,…0 , 1 , 0 , 1 , \dots 交替报数,报到 11 的人会离开,直至圈中只剩下一个人。求最后剩下人的编号。

试补全模拟程序。

#include <iostream>

using namespace std;

const int MAXN = 1000000;
int F[MAXN];

int main() {
    int n;
    cin >> 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;
    cout << ans << endl;
    return 0;
}

①处应填( ) A.i < n B.c < n C.i < n- 1 D.c < n-1

{{ select(1) }}

  • i < n
  • c < n
  • i < n - 1
  • c < n - 1