zoukankan      html  css  js  c++  java
  • 开灯问题

    问题描述:有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关,依此类推,一共k个人,问最后有哪些灯开着?   输入n,k,输出开着的灯的编号。  k<=n<=1000

    思路:定义一个存储灯的布尔类型的数组,将它们的值都设置为false,表示灭。然后遍历处理一下,输出值为真的灯的编号。

     1 #include<iostream>    
     2 
     3 using namespace std;
     4 bool a[100];
     5 int main()
     6 {
     7     int n, k;
     8     cin >> n >> k;
     9     memset(a, false, sizeof(int));  // 将数组全部置为false
    10 
    11     for (int i = 1; i <= k; i++)          //    有k个人
    12         for (int j = 1; j <= n; j++) {      //  有n盏灯
    13             if (j%i == 0) a[j] = !a[j];       // 如果灯的编号不是人的编号的倍数,将数组置反。
    14         }
    15     for (int i = 1; i <= n; i++) {   //   打印合格数据
    16         if (a[i])cout << i << " ";
    17     }
    18 
    19     system("pause");
    20 }
  • 相关阅读:
    重构了一波代码,聊聊后端也聊聊游戏后端
    浅谈游戏开发中常见的设计模式
    一次查内存泄露
    sql语句技巧
    python后端链接数据库-----MySQLdb
    web的应用模式
    静态文件
    django配置文件
    视图
    django子应用
  • 原文地址:https://www.cnblogs.com/ll-10/p/9574143.html
Copyright © 2011-2022 走看看