[C++] 开灯问题(两个思路)
[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++] 开灯问题(两个思路)相关推荐
- 基于ESP32的隔空开灯
通常灯和它的开关都是通过电路连接在一起的.如果开关和灯没有任何电路连接,开关还能控制灯吗?今天就给大家展示下如何隔空开灯. 隔空开灯其实是用到了WiFi通信技术,WiFi通信是物联网系统中常用的一项无 ...
- 开灯关灯问题的两种解决方式(数学建模线性代数的应用和编程实现)
开灯关灯问题的两种解决方式 1.问题介绍 2.编程实现算法及其代码(详细) 3.就该题进行数学建模–体验线性代数的使用 1.问题介绍 有一个按钮组成的矩阵,其中每行有5个按钮,共5行.每个按钮旁边有一 ...
- 算法竞赛入门经典_3.1_数组_逆序输出_开灯问题
又是新的一天,继续更新. 今天进入了新的章节,数组和字符串 1.逆序输出问题: 先来看代码吧 #include <stdio.h> //逆序输出 2017-8-16 #define max ...
- PNAS:别开灯睡觉了,既损害心血管健康,还会增加患糖尿病风险
丰色 发自 凹非寺 量子位 | 公众号 QbitAI 你喜欢开灯睡觉吗? PNAS期刊上最近刊登的一项研究显示: 与关灯睡觉相比,即使中等强度的灯光也会使我们的的心率增高,在第二天早上出现胰岛素抵抗水 ...
- 小学数学开灯问题_包含数学暑假答案的一年级数学假期作业题
学好数学就要多做题,掌握数学各种题型对解题能力提高很重要.要重视课堂听课的重要性,寻知道适合自己的学习方法.多做一些优秀的数学题,养成解题习惯并且掌握一般的解题规律.了解什么对自己而言是易错题,什么需 ...
- 吸顶那个叫什么_为什么我家吸顶灯开灯后一闪一闪的
前不久,笔者看到网络上有网友在问:为什么我家的吸顶灯开灯后一闪一闪的,关灯后闪一会才会灭!对于这个问题,笔者发现有好多网友在问.我们给出的方法和原则就是:哪里里坏了换哪里! 那么,具体是哪里坏了,我们 ...
- java开灯问题_C++之开灯问题(链表)
有n盏灯,编号为1~n.第1个人把所有灯打开,第2个人按下所有编号为2的倍数开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关,以此类推.一共有k个人,问最后有哪些灯开着?输入n和k,输出开 ...
- 洛谷——P1161 开灯
P1161 开灯 题目描述 在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,-1,2,3,4,-. 每一盏灯只有两种可能的状态,开或者关.如果按一下某一盏灯的开关,那么这盏灯的状态将发生 ...
- 开灯问题_谁会一直开灯
开灯问题 California is arguably the wealthiest and most technologically advanced place on earth. It's gr ...
- 小学数学开灯问题_二年级数学算式大全
数学与工作.学习.生活息息相关,有时除了简单的运算,还需要结合生活中的常识. 下面三道小二年级的数学题,是某二年级数学老师出给自己班上学生的课堂练习,要求大家一遍过,不能修改.结果全对的还不到全班人数 ...
最新文章
- JavaEE学习笔记之Servlet
- js 读取flask后台变量
- ubuntu系统下matplotlib中文乱码问题
- matlab cfun,【图片】求求各位大佬帮弱鸡看看【matlab吧】_百度贴吧
- mysql弄丢初始密码_MySql密码丢失
- 远程桌面登录 Windows Server 2003时提示无权限
- java cxf 工具_利用CXF工具开发WebService接口
- 【Vue】—项目的目录结构介绍
- 使用类型注解让 Python 代码更易读
- 《Nature》 和 《 Science》 的区别是什么?
- unity人物刚体移动_Unity3D 角色(物体) 移动方法 合集
- java socket 发对象_Java Socket 发送对象
- 【DockerCE】Docker-CE 20.10.17正式版发布
- matlab白化代码,[支持m_map白化] MATLAB对地图进行白化
- [unity]实现切水果游戏
- 日落潭照树,川明风动花。
- 入坑百度飞浆PP深度学习(一)
- windows搭建Git服务器之Bonobo Git Server
- qmail的运行程序
- redhat 安装Qt中遇到的问题
热门文章
- python英文分词库_Python中文分词库jieba,pkusegwg性能准确度比较
- Magento二次开发哪家好呢?
- 公平的席位分配MATLAB编程(Q值法)
- 植物大战僵尸修改存档文件-C1认证
- 使用LocalStorage存储用户已填写的表单信息(意外刷新后自动填充)
- [vue3.x]实战问题--Extraneous non-props attributes
- ora-29861: 域索引标记为loading/failed/unusable
- Ubuntu18.04出现无WIFI适配器解决方法汇总
- vue 萤石_Vue接入萤石实时视频
- 使用 dfuse 无缝过渡到 EOSIO 1.8