Skip to content

20240421 - 一维数组模拟算法

实际上就只是写写题目
比如说第一个人打开全部的灯, 第二个关闭2的倍数的灯, 第三个打开3的倍数的灯, etc., 求第 m 个人后, 关闭的灯的序号之类的

cpp
#include <iostream>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    bool lights[n];
    for (int i=0; i < n; i++) {
        lights[i] = true;
    }

    for (int turn=1; turn <= m; turn++) {
        for (int i=turn-1; i < n; i += turn) {
            lights[i] = !lights[i];
        }
    }

    for (int i=0; i < n; i++) {
        if (!lights[i]) {
            printf("%d, ", i+1);
        }
    }
}