zoukankan      html  css  js  c++  java
  • 20200826开关灯(奥赛一本通 p80 8)

    //假设有n盏灯(n为不大于5000的正整数),从1-n按顺序依次编号,初始时全部处于开启状态,0为开,1为关
    //有m个人(m为不大于n的正整数)也从1-m依次编号。
    //第1个人将灯全部关闭,第2个人将编号为2的倍数的灯打开,第3个人将是3倍数的灯做相反处理(也就是将打开的灯关闭,关闭的灯打开)。依照编号
    //递增顺序,以后的人都和3号一样,将凡是自己的编号倍数的灯做相反处理。
    //请问:当第m个人操作之后,哪些编号的灯是关闭的,从小到大输出其编号,其间用逗号间隔。
    #include <bits/stdc++.h>
    using namespace std;
    int a[5001];
    int main()
    {
      int m,n,z=1;
      memset(a,0,sizeof(a));
      //上行的意思是:对于数组a,从0开始到5001都初始为0,第二个参数是初始值,memset是逐字节COPY的
      cin>>n>>m;
      for(int i=1;i<=m;i++)
      {

        for(int j=1;j<=n;j++)
         {
           if(j%i==0) a[j]=!a[j];
         }
      }
      for(int i=1;i<=n;i++)
        {
         if(a[i]) //如果是关闭的灯
            {
              if(z)
               {
                 z=0;
               }
             else
              {
                 printf(",");
              }
           printf("%d",i);
       }

    }
    printf(" ");
    return 0;
    }

  • 相关阅读:
    LeetCode Related Info
    LeetCode Climbing Stairs
    Linux命令语句秘籍
    Java基础学习 —— io
    Jquery的入门学习
    Java基础学习 —— bat处理文件
    Java基础学习 —— 线程
    Java基础学习——泛型
    java基础学习——集合
    两个div叠加触发事件发生闪烁问题
  • 原文地址:https://www.cnblogs.com/whcsrj/p/13567929.html
Copyright © 2011-2022 走看看