[C++] 开灯问题(两个思路)

两个思路
一个用到数组,从人的角度出发;
一个不用数组,从灯泡的角度出发。

题目

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

样例输入:

7 3

样例输出:

1 5 6 7

第一个思路分析

创建一个a[n]数组,开灯全置1代表灯亮状态,后每次操作(不管开灯还是关灯)时,都对原来元素取非。最后依次判断灯泡状态,输出。

代码实现

int main()
{int n, k, i;cin>>n>>k;int a[n];for(i = 0; i < n; i++)   //初始化灯泡a[i] = 1;for(i = 2; i <= k; i++){for(int p = 1; p < n; p++){if((p+1) % i == 0)       //操作开关a[p] = !a[p];}}for(i = 0; i < n; i++){if(a[i])       //判断输出cout<<i+1<<" ";}return 0;
}

第二个思路分析

不用初始化数组,用一个字符m=1表示灯泡开着,然后分别对每一个灯泡操作,比如7个灯泡4个人,那么循环到第2个灯泡,只需要第2个人操作一次,循环到第4个灯泡需要第2个和第4个人总操作两次。在遍历所有从第2个开始的所有人后,判断灯泡状态。

代码实现

int main()
{int n, k, m = 1;cin>>n>>k;for(int i = 1; i <= n; i++){for(int p = 2; p <= k; p++){if(i % p == 0 )    //操作灯泡m = !m;}if(m)             //判断输出cout<<i;m = 1;}return 0;
}

[C++] 开灯问题(两个思路)相关推荐

  1. 基于ESP32的隔空开灯

    通常灯和它的开关都是通过电路连接在一起的.如果开关和灯没有任何电路连接,开关还能控制灯吗?今天就给大家展示下如何隔空开灯. 隔空开灯其实是用到了WiFi通信技术,WiFi通信是物联网系统中常用的一项无 ...

  2. 开灯关灯问题的两种解决方式(数学建模线性代数的应用和编程实现)

    开灯关灯问题的两种解决方式 1.问题介绍 2.编程实现算法及其代码(详细) 3.就该题进行数学建模–体验线性代数的使用 1.问题介绍 有一个按钮组成的矩阵,其中每行有5个按钮,共5行.每个按钮旁边有一 ...

  3. 算法竞赛入门经典_3.1_数组_逆序输出_开灯问题

    又是新的一天,继续更新. 今天进入了新的章节,数组和字符串 1.逆序输出问题: 先来看代码吧 #include <stdio.h> //逆序输出 2017-8-16 #define max ...

  4. PNAS:别开灯睡觉了,既损害心血管健康,还会增加患糖尿病风险

    丰色 发自 凹非寺 量子位 | 公众号 QbitAI 你喜欢开灯睡觉吗? PNAS期刊上最近刊登的一项研究显示: 与关灯睡觉相比,即使中等强度的灯光也会使我们的的心率增高,在第二天早上出现胰岛素抵抗水 ...

  5. 小学数学开灯问题_包含数学暑假答案的一年级数学假期作业题

    学好数学就要多做题,掌握数学各种题型对解题能力提高很重要.要重视课堂听课的重要性,寻知道适合自己的学习方法.多做一些优秀的数学题,养成解题习惯并且掌握一般的解题规律.了解什么对自己而言是易错题,什么需 ...

  6. 吸顶那个叫什么_为什么我家吸顶灯开灯后一闪一闪的

    前不久,笔者看到网络上有网友在问:为什么我家的吸顶灯开灯后一闪一闪的,关灯后闪一会才会灭!对于这个问题,笔者发现有好多网友在问.我们给出的方法和原则就是:哪里里坏了换哪里! 那么,具体是哪里坏了,我们 ...

  7. java开灯问题_C++之开灯问题(链表)

    有n盏灯,编号为1~n.第1个人把所有灯打开,第2个人按下所有编号为2的倍数开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关,以此类推.一共有k个人,问最后有哪些灯开着?输入n和k,输出开 ...

  8. 洛谷——P1161 开灯

    P1161 开灯 题目描述 在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,-1,2,3,4,-. 每一盏灯只有两种可能的状态,开或者关.如果按一下某一盏灯的开关,那么这盏灯的状态将发生 ...

  9. 开灯问题_谁会一直开灯

    开灯问题 California is arguably the wealthiest and most technologically advanced place on earth. It's gr ...

  10. 小学数学开灯问题_二年级数学算式大全

    数学与工作.学习.生活息息相关,有时除了简单的运算,还需要结合生活中的常识. 下面三道小二年级的数学题,是某二年级数学老师出给自己班上学生的课堂练习,要求大家一遍过,不能修改.结果全对的还不到全班人数 ...

最新文章

  1. JavaEE学习笔记之Servlet
  2. js 读取flask后台变量
  3. ubuntu系统下matplotlib中文乱码问题
  4. matlab cfun,【图片】求求各位大佬帮弱鸡看看【matlab吧】_百度贴吧
  5. mysql弄丢初始密码_MySql密码丢失
  6. 远程桌面登录 Windows Server 2003时提示无权限
  7. java cxf 工具_利用CXF工具开发WebService接口
  8. 【Vue】—项目的目录结构介绍
  9. 使用类型注解让 Python 代码更易读
  10. 《Nature》 和 《 Science》 的区别是什么?
  11. unity人物刚体移动_Unity3D 角色(物体) 移动方法 合集
  12. java socket 发对象_Java Socket 发送对象
  13. 【DockerCE】Docker-CE 20.10.17正式版发布
  14. matlab白化代码,[支持m_map白化] MATLAB对地图进行白化
  15. [unity]实现切水果游戏
  16. 日落潭照树,川明风动花。
  17. 入坑百度飞浆PP深度学习(一)
  18. windows搭建Git服务器之Bonobo Git Server
  19. qmail的运行程序
  20. redhat 安装Qt中遇到的问题

热门文章

  1. python英文分词库_Python中文分词库jieba,pkusegwg性能准确度比较
  2. Magento二次开发哪家好呢?
  3. 公平的席位分配MATLAB编程(Q值法)
  4. 植物大战僵尸修改存档文件-C1认证
  5. 使用LocalStorage存储用户已填写的表单信息(意外刷新后自动填充)
  6. [vue3.x]实战问题--Extraneous non-props attributes
  7. ora-29861: 域索引标记为loading/failed/unusable
  8. Ubuntu18.04出现无WIFI适配器解决方法汇总
  9. vue 萤石_Vue接入萤石实时视频
  10. 使用 dfuse 无缝过渡到 EOSIO 1.8