H2430819054


私信TA

用户名:dotcpp0794509

访问量:103

签 名:

什么玩意儿这是。

等  级
排  名 1524
经  验 2810
参赛次数 1
文章发表 7
年  龄 0
在职情况 学生
学  校 贺州学院
专  业 软件工程

  自我简介:

解题思路:灯的状态可用1和0表示,这里用的是1开0关。

注意事项:数组的下标是从0开始的,而我们的灯是从1开始,所以需要注意下标的关系

参考代码:

#include<stdio.h>
int main()
{
    int N,M,o = 0;//o是个辅助打印格式的记号
    scanf("%d %d",&N,&M);
    int lit[5000] = {0};//没5000个元素不给过
    for(int i = 2; i <= M; i++)//因为第一个人会把所有灯关了,所以我们直接初始化为全关然后从第二个人开始循环
    {
        for(int k = i; k <= N; k++)//开关的灯和编号为倍数关系所以小于编号的灯就不用管了
        {
            if(k % i == 0)
            lit[k-1] = !lit[k-1];//反逻辑操作符让灯变换状态
        }
    }
    for(int i = 0; i < N; i++)//打印
    {
        if(lit[i] == 0)
        {
            if(o == 1)
                printf(",");
            printf("%d",i+1);
            o = 1;
        }
    }
    return 0;
}


 

0.0分

0 人评分

  评论区

  • «
  • »