开灯问题属于C语言中一维数组中较为基础典型的一道练习

问题:

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

样例输入:

7  3

样例输出:

1 5 6 7

【分析】

用a[1],a[2]…..a[n]来表示编号为1,2….n的灯

第二个人按下2的倍数,第三个人按下3的倍数可以通过第几盏灯除以第几个人取余数看是否为0

通过真假判断灯的亮灭

【代码】

#include

#include

#define maxn 1010

int a[maxn];

int main()

{

int n,k,first=1;

memset(a,0,sizeof(a));

scanf("%d%d",&n,&k);

for(int i=1;i<=k;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(first)

first=0;

else

printf(" ");

printf("%d",i);

}

printf("\n");

return 0;

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

#include

#include

#define maxn 1010

inta[maxn];

intmain()

{

intn,k,first=1;

memset(a,0,sizeof(a));

scanf("%d%d",&n,&k);

for(inti=1;i<=k;i++)

for(intj=1;j<=n;j++)

if(j%i==0)a[j]=!a[j];

for(inti=1;i<=n;i++)

if(a[i])

{

if(first)

first=0;

else

printf(" ");

printf("%d",i);

}

printf("\n");

return0;

}

部分解释:

memset(a,0,sizeof(a)); 用来表示把数组a清零,他在#include 中定义

接下来

for(int i=1;i<=k;i++)

for(int j=1;j<=n;j++)

if(j%i==0) a[j]=!a[j];

依次用第几盏灯数除以当前第几个人取余数看是否为0,如果是则取反即1->0 ,0->1来表示灯的亮灭

接下来程序为了避免输出多余的空格,设置了一个标志变量first 开始时定义first=1即为真if(first) first=0;来管理当前输出变量是否为第一个,如果是则first为0即为假,后续每一个值前加一个空格

java开灯问题_算法入门之开灯问题相关推荐

  1. java 串的顺序存储_算法入门之串的顺序存储表示

    串,即字符串.计算机上的非数值处理的对象基本上是字符串数据.但是,由于现在我们使用的计算机硬件结构主要是反映数值计算的需要的,在处理字符串数据时比处理整数和浮点数要复杂的多.而且,对于不同类型程序,所 ...

  2. 3w最简单led灯电路图_为何感应LED车库灯更适用于地下车库?

    随着小汽车的普及,现在的房产物业都会有至少一层地下车库,为方便用户停/取车,车库照明基本都是24小时亮灯,有没有人在车库,灯都在亮着,也就造成了大量的电力浪费,很多灯具企业为响应国家节能减排工作,应运 ...

  3. java实现子序列最大和_算法入门:最大子序列和的四种算法(Java)

    最近再学习算法和数据结构,推荐一本书:Data structures and Algorithm analysis in Java 3rd 以下的四种算法出自本书 四种最大子序列和的算法: 问题描述 ...

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

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

  5. java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...

  6. java猴子分桃_算法——猴子分桃

    想做些有关"算法"的练习题,在网上无意间看到了一道很经典的算法题--猴子分桃,于是百度了一下,才发现这道题的相关文档很多很多,但最多的也就是使用C++或者Java来解决这道题,而自 ...

  7. java矩阵连乘_算法设计与分析——矩阵连乘问题(动态规划)

    一.问题描述 引出问题之前我们先来复习一下矩阵乘积的标准算法. int ra,ca;//矩阵A的行数和列数 int rb,cb;//矩阵B的行数和列数 voidmatrixMultiply() {fo ...

  8. 通讯录排序 (20分)_算法入门篇:简单的排序算法

    作者:dorseyCh来源:http://www.imooc.com/article/264180 很久之前有过一次面试,被问到一个问题,能不能写一个冒泡排序?说实话,尽管在这之前曾经写过不少比这个更 ...

  9. java蛮力法背包问题_[算法课]五种蛮力法解决01背包问题

    文章目录 注明:题目要求只能使用蛮力法 算法标签:全排列,枚举,二进制,dfs,数组 题目简介 思路 AC代码 方法一:字符串蛮力 方法二:二进制枚举 方法三:DFS 三.2闫老板思考角度 方法四:全 ...

  10. java年利润编程题_[编程入门]利润计算-题解(Java代码)

    ![](/image_editor_upload/20200216102044_14158.png)这也是简单的分类问题,用if进行分类后就可以用switch进行分类计算利润 代码如下: packag ...

最新文章

  1. java 常用正则表达式
  2. 用户不见了_屋面瓦/外墙板再也看不见螺丝打胶了
  3. 数据结构与算法——树的广度优先遍历
  4. vue实现可编辑的文字_苹果还自带文字转语音,只要一键按下便可实现,今天分享给大家...
  5. LAMP环境安装与apache配置
  6. 图片安全检测和数据跨境复制,规避违规风险
  7. 【教程】win7下无需软件或adhoc补丁通过无线网卡搭建虚拟wifi网络
  8. 如何清空c盘只剩系统_C盘满了怎么办?除了重装系统,还有这些办法!
  9. 嵌入式开发中数值常量如何转化为内存地址?
  10. 软件测试是什么,测试从一个点出发。
  11. Supervisor的作用与配置
  12. 博图编写温度程序_数字式温度控制器程序设计
  13. android音频格式,适用于iOS和Android的音频格式
  14. 一元三次方程重根判别式_一元三次方程的求根公式
  15. itest手机考试有监控吗_itest机考说明
  16. 前端如何在本地启动一个服务,跑打包后的项目
  17. 2020哔哩哔哩大数据面试题整理
  18. AjaxPro2 方法未定义,对象不支持此方法或属性,解决办法
  19. java的含义是什么
  20. Linux:bc计算根号保留小数

热门文章

  1. 匹配 网络 Q值 带宽
  2. DHCP 协议(一)
  3. 线程学习记录-锁原理与对象头
  4. 记首次CCF数据算法竞赛的心得与收获(排名top1、top2%、top8%),CCF明年再会!
  5. golang gin框架全局捕获500和404
  6. 试述Linux内核启动过程,Linux内核启动过程和Bootloader(总述)
  7. 06-Python类和对象
  8. Jquery 中a||的含义
  9. 2019级软件工程应用与实践-人工智能快递柜(代码分析3)
  10. 深圳哪个区最富,哪个区最穷?最新GDP排名出炉,没想到第二名是