不会起名字~ 2023-12-26 16:44 采纳率: 25%
浏览 30
已结题

看看c语言开关灯问题



#include<stdio.h>
# define L 5005
int main()
{
    int N,M,a[L]={0};
    scanf("%d %d",&N,&M);
    int i,flag=0,j;
    for(i=2;i<=N;i++)
    {
        for(j=i;j<=M;j+=i)
        {
            a[j]=(a[j]==1?0:1);
        }
    }
    for(i=1;i<=M;i++)
    {
        if(a[i]==0)
        {
            if(flag==0){
            printf("%d",i);
            flag=1;     
            }
            else{
            printf(",%d",i);
        }
        }
    }
    return 0;
}

想问问这个代码有什么问题吗?为什么我总是过不了😭😭
题目
假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。
第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。
请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。
输入格式
输入正整数N和M,以单个空格隔开。
输出格式
顺次输出关闭的灯的编号,其间用逗号间隔。
输入输出样例
输入
10
10
输出
1,4,9

  • 写回答

2条回答 默认 最新

  • 赵4老师 2023-12-26 17:06
    关注
    
    //题目
    //假设有N盏灯(N为不大于5000的正整数),从1到N按顺序依次编号,初始时全部处于开启状态;有M个人(M为不大于N的正整数)也从1到M依次编号。
    //第一个人(1号)将灯全部关闭,第二个人(2号)将编号为2的倍数的灯打开,第三个人(3号)将编号为3的倍数的灯做相反处理(即将打开的灯关闭,将关闭的灯打开)。依照编号递增顺序,以后的人都和3号一样,将凡是自己编号倍数的灯做相反处理。
    //请问:当第M个人操作之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用逗号间隔。
    //输入格式
    //输入正整数N和M,以单个空格隔开。
    //输出格式
    //顺次输出关闭的灯的编号,其间用逗号间隔。
    //输入输出样例
    //输入
    //10
    //10
    //输出
    //1,4,9
    #include<stdio.h>
    #define L 5005
    int main()
    {
        int N,M,a[L];
        int i,flag,j;
    //  int k;
    
        scanf("%d%d",&N,&M);
        for(i=1;i<=N;i++) a[i]=0;
    //  printf("%d\n",0); for (k=1;k<=N;k++) printf("%d",a[k]); printf("\n");
        for(j=1;j<=M;j++) {
            for(i=j;i<=N;i+=j) {
                a[i]=1-a[i];
            }
    //      printf("%d\n",j); for (k=1;k<=N;k++) printf("%d",a[k]); printf("\n");
        }
        flag=0;
        for(i=1;i<=N;i++) {
            if(a[i]==1) {
                if(flag==0) {
                    printf("%d",i);
                    flag=1;
                } else {
                    printf(",%d",i);
                }
            }
        }
        printf("\n");
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月3日
  • 已采纳回答 12月26日
  • 修改了问题 12月26日
  • 创建了问题 12月26日

悬赏问题

  • ¥15 曙光1620-g30服务器安装硬盘后 看不到硬盘
  • ¥15 抖音直播广场scheme
  • ¥15 为什么我明明有这个文件调试器还显示错误?
  • ¥15 软件工程用例图的建立(相关搜索:软件工程用例图|画图)
  • ¥15 如何在arcgis中导出拓扑关系表
  • ¥15 处理数据集文本挖掘代码
  • ¥15 matlab2017
  • ¥15 在vxWorks下TCP/IP编程,总是connect()报错,连接服务器失败: errno = 0x41
  • ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
  • ¥20 求:怎么实现qt与pcie通信