B2092 开关灯

思路

定义 bool 数组 $a,a[i]$ 表示第 $i$ 个灯是否关闭

从 $1$ 到 $n$ 枚举每个人,对于每个人,枚举倍数。

令人数$×$倍数 $≤ n$,再修改 $a[$ 人数 $×$ 倍数 $]$ 的状态。

代码

#include <iostream>
using namespace std;
bool a[5001];int n;
int main()
{
    cin >> n;
    for(int i = 1;i <= n;++i) //枚举每个人
        for(int j = 1;i * j <= n;++j) //枚举倍数,人数×倍数≤n
            a[i * j] = !a[i * j]; //修改状态
    for(int i = 1;i <= n;++i)
        if(a[i]) cout << i << " "; //灯是关的,输出
    return 0;
}
posted @ 2021-07-14 18:04  5k_sync_closer  阅读(23)  评论(0编辑  收藏  举报  来源