java开灯问题_算法入门之开灯问题
开灯问题属于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开灯问题_算法入门之开灯问题相关推荐
- java 串的顺序存储_算法入门之串的顺序存储表示
串,即字符串.计算机上的非数值处理的对象基本上是字符串数据.但是,由于现在我们使用的计算机硬件结构主要是反映数值计算的需要的,在处理字符串数据时比处理整数和浮点数要复杂的多.而且,对于不同类型程序,所 ...
- 3w最简单led灯电路图_为何感应LED车库灯更适用于地下车库?
随着小汽车的普及,现在的房产物业都会有至少一层地下车库,为方便用户停/取车,车库照明基本都是24小时亮灯,有没有人在车库,灯都在亮着,也就造成了大量的电力浪费,很多灯具企业为响应国家节能减排工作,应运 ...
- java实现子序列最大和_算法入门:最大子序列和的四种算法(Java)
最近再学习算法和数据结构,推荐一本书:Data structures and Algorithm analysis in Java 3rd 以下的四种算法出自本书 四种最大子序列和的算法: 问题描述 ...
- 开灯问题_谁会一直开灯
开灯问题 California is arguably the wealthiest and most technologically advanced place on earth. It's gr ...
- java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...
- java猴子分桃_算法——猴子分桃
想做些有关"算法"的练习题,在网上无意间看到了一道很经典的算法题--猴子分桃,于是百度了一下,才发现这道题的相关文档很多很多,但最多的也就是使用C++或者Java来解决这道题,而自 ...
- java矩阵连乘_算法设计与分析——矩阵连乘问题(动态规划)
一.问题描述 引出问题之前我们先来复习一下矩阵乘积的标准算法. int ra,ca;//矩阵A的行数和列数 int rb,cb;//矩阵B的行数和列数 voidmatrixMultiply() {fo ...
- 通讯录排序 (20分)_算法入门篇:简单的排序算法
作者:dorseyCh来源:http://www.imooc.com/article/264180 很久之前有过一次面试,被问到一个问题,能不能写一个冒泡排序?说实话,尽管在这之前曾经写过不少比这个更 ...
- java蛮力法背包问题_[算法课]五种蛮力法解决01背包问题
文章目录 注明:题目要求只能使用蛮力法 算法标签:全排列,枚举,二进制,dfs,数组 题目简介 思路 AC代码 方法一:字符串蛮力 方法二:二进制枚举 方法三:DFS 三.2闫老板思考角度 方法四:全 ...
- java年利润编程题_[编程入门]利润计算-题解(Java代码)
![](/image_editor_upload/20200216102044_14158.png)这也是简单的分类问题,用if进行分类后就可以用switch进行分类计算利润 代码如下: packag ...
最新文章
- java 常用正则表达式
- 用户不见了_屋面瓦/外墙板再也看不见螺丝打胶了
- 数据结构与算法——树的广度优先遍历
- vue实现可编辑的文字_苹果还自带文字转语音,只要一键按下便可实现,今天分享给大家...
- LAMP环境安装与apache配置
- 图片安全检测和数据跨境复制,规避违规风险
- 【教程】win7下无需软件或adhoc补丁通过无线网卡搭建虚拟wifi网络
- 如何清空c盘只剩系统_C盘满了怎么办?除了重装系统,还有这些办法!
- 嵌入式开发中数值常量如何转化为内存地址?
- 软件测试是什么,测试从一个点出发。
- Supervisor的作用与配置
- 博图编写温度程序_数字式温度控制器程序设计
- android音频格式,适用于iOS和Android的音频格式
- 一元三次方程重根判别式_一元三次方程的求根公式
- itest手机考试有监控吗_itest机考说明
- 前端如何在本地启动一个服务,跑打包后的项目
- 2020哔哩哔哩大数据面试题整理
- AjaxPro2 方法未定义,对象不支持此方法或属性,解决办法
- java的含义是什么
- Linux:bc计算根号保留小数