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;
    }

  • 相关阅读:
    Git 分支[转]
    监听键盘的输入事件[转]
    github for windows的初步使用
    限制一个form被同时打开的数量 Limite The Number of Forms Opened at the same time
    android内存检测工具
    面试 9.26 总结
    canvas path paint 的使用(游戏必备)
    android知识点
    android查缺补漏
    AIDL的使用
  • 原文地址:https://www.cnblogs.com/whcsrj/p/13567929.html
Copyright © 2011-2022 走看看