开灯问题(算法入门)

memset详解 第一:memset函数按字节对内存块进行初始化,所以不能用它将int数组初始化为0和-1之外的其他值(除非该值高字节和低字节相同)。 第二:memset(void *s, int ch,size_t n);中ch实际范围应该在0~~255,因为该函数只能取ch的后八位赋值给你所输入的范围的每个字节,比如int a[5]赋值memset(a,-1,sizeof(int )*5)与memset(a,511,sizeof(int )*5) 所赋值的结果是一样的都为-1;因为-1的二进制码为(11111111 1 阅读详情

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

输入n和k        (k<=n<=1000)

输出开着的灯的编号。

样例输入:

7 3

样例输出:

1 5 6 7

代码:

#include<stdio.h>
int a[1001] = { 0 };
int main()
{
	int n, k;
	scanf("%d %d", &n, &k);
	for (int i = 1; i <= k; i++)
		for (int j = 1; j * i <= n; j++)
			a[i * j] = (a[i * j] + 1) % 2;
	for (int i = 1; i <= n; i++)
		if (a[i] == 1)printf("%d ", i);
	printf("\n");
	return 0;
}

课本代码:

#include<stdio.h>
#include<string.h>
#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;
}

 

算法竞赛入门经典 开灯问题C++解法 开灯问题 开灯问题。有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯 将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输 入n和k,输出开着的灯的编号。k≤n≤1000。 样例输入: 7 3 样例输出: 1 5 6 7 #include<iostream>... 阅读详情

相关推荐

算法竞赛入门经典(开灯问题)

问题: 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯被打开, 开着灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着? 输入:n和k,输出开着的灯编号。k≤n≤1000。 样例输入: 7 3 样例输出: 1 5 6 7 # define MaxSize 1005 # include<iostream> using namespace std; int a[MaxSize]={0};

shenjunjiegood的博客 347

算法入门,开灯问题

题目: 有n盏灯,编号为1-n,第一个人把所有灯打开,第二个人按下所有编号两倍的开关(这些灯被关掉),第三个人按下所有编号三倍的开关,以此类推,一共有k个人,问最后有哪些灯开着? 输入:n和k,输出开着的灯的编号,k<=n<=1000 样例输入: 7 3 样例输出:1 5 6 7 思路: 由题目可以知道,原先所有灯都是关闭,第一个人是1的倍数,所以他操作1倍数的所有灯,然后让所有灯打开,依次2的倍数,3的倍数,我们发现灯的开关是对应相应的人数的倍数,所以我们采用两个for循环 .

qq_62718027的博客 1727

C语言初学者代码中的常见错误与问题

问题开灯问题   有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000 代码如下:#include <stdio> #include <math.h> int main() {    int a[1001],n,k,i,j;    printf(“请分别输入灯和人的数量\n”);    scanf(“%d%d”,&n,&k);    while(1) //检验是否

开灯问题

问题:有n盏灯,编号为1~n。第1个人把灯都打开,第2个人按下所有编号为2的倍数的灯的开关,第3个人按下所有编号为3的倍数的灯的开关。一共有k个人,问最后有哪些灯开着?(k<=n<=1000) 方法1(书上方法) 1. 首先确定灯和人的数量,并声明一个布尔变量代表灯的开关状态。 2. 嵌套循环,外循环为人的序号。内循环为灯的序号。 3. 人和灯都从1开始增加,先确定人的序数,再

liu1324457514的博客 1734

如果使用ssms连接SQLserver的时候出现无法连接到服务器。

如果使用ssms连接SQLserver的时候出现无法连接到服务器。 Lan 2020-03-29 22:11 329 人阅读 0 条评论 标题: 连接到服务器------------------------------无法连接到...

Vastsa的博客 1万+

《手把手教你修复过期K8s集群证书:记一次K8s集群起死回生实录》

今天本想打开半年前部署的K8s测试集群跑个Demo,结果`kubectl`直接报错`certificate has expired`!作为一名云原生老司机,我决定把这次'抢救'过程记录下来,手把手带大家解决这个运维常见问题。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3779

开灯问题(C语言)

if(j%i==0){//如果j%i==0,关的灯打开,开的灯关上,例如当i=1时,关的灯都打开,i=2时,2倍数的开关都关上(因为i=1时灯全部为打开状态),依次类推。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推,一共有k个人。memset(a,0,sizeof(a));//将集合a里的元素全部赋值为0,初始状态为关灯。if(a[i]){//如果灯开着,则输出灯的编号。...

wyy_____的博客 6461

使用virtuoso gds转lef操作方法

2) 然后,需要创建Pin,这里Pin的概念不同于label/text,是有实际金属的,二者的区别类似于pr中的port和terminal。1) 首先,需要画prBoundary,这个用drawing层的prBoundary画是不行的,不过建议pr阶段就把prBoundary转到gds里,在virtuoso layout中画prBoundary就比较容易。另外,用Create - Create Pin也可以创建pin,更适用于PG pin,操作时先给pg shape打label,最好放正中间。

m0_61544122的博客 1380

《算法竞赛入门经典第二版》p39 开灯问题

本文介绍了开灯问题的算法解法。问题描述:n盏灯初始关闭,n个人依次操作灯的开关(第i个人改变所有i倍数的灯的状态),求最终亮着的灯。解决方案使用一维数组存储灯的状态,通过双重循环模拟操作过程,利用非运算符(!)切换状态。文章重点讲解了memset函数快速清零数组的技巧,以及输出格式控制方法(通过first变量避免首尾多余空格)。该问题虽然算法简单,但涉及数组操作、状态切换和严谨的输出控制等编程基础,对算法竞赛入门者具有很好的练习价值。

2401_86878806的博客 596

【软件系统架构】系列十一:面向对象技术—sysML

摘要: SysML(系统建模语言)是UML的扩展,专为复杂系统工程设计,支持硬件、软件、人员等跨领域建模。其核心包括9种图:4种结构图(如块定义图BDD、内部块图IBD)、4种行为图(如活动图AD、序列图SD)和需求图(REQ),覆盖需求、结构、行为及参数约束。相比UML(面向软件),SysML精简图表(9 vs 13),强化需求追踪与性能分析(如参数图PD),并支持MBSE(基于模型的系统工程)。需求关系(如满足、验证、派生)在需求图中明确关联设计实现,形成闭环管理。SysML是UML的子集与系统工程扩展

moton2017的博客 1909

RK3568平台(USB篇)USB基础知识

现象:把USB设备比如Android手机接到PC答1:是USB控制器,是USB控制器内嵌的root hub.答2. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone"提示你安装的是"设备驱动程序"。USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序。答3. PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;

weixin_49303682的博客 1658

算法竞赛入门经典 开灯问题

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

m0_62574889的博客 2542

【QNX+Android虚拟化方案】129 - USB眼图参数配置

【QNX+Android虚拟化方案】129 - USB眼图参数配置

|~~~热爱生活、努力学习的小伙汁~~~| 821

算法入门经典:开灯问题

算法入门经典:开灯问题 前言:一直很羡慕那些善于写算法的同学,感觉他们真的很聪明,不想我这么笨,一思考算法就头疼。罢了,从最简单的开始吧,加油。 问题: 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯被打开, 开着灯将被关闭),依此类推。一共有k个人,问最后有

MissXy_的博客 7167

文献综述三大痛点用AI轻松解决!借助Gemini 3 Pro搞定检索难、阅读慢、框架乱问题(附 AI 提示词)

4)“漏斗式”结构:先介绍宏观领域的研究现状,再缩小范围,聚焦于与你课题直接先关的子领域,深入探讨与你研究变量直接相关的文献, 指出前人没做过、没做全或结论有矛盾的地方,再顺势提出你的研究课题,这种结构逻辑最清晰,能直接引导读者发现你研究的必要性。想要有针对性的搜到相关文献,必须先把模糊的研究题目拆解成精准的检索语言,这个时候就需要建立一个关键词矩阵,如核心词、同义词、学术术语、上下位词,以及对应的英文表达。请围绕【我的研究主题/关键词】,检索近5年发表的高被引的中英文文献,优先选择顶刊综述/论文。

智能AI让学术科研更容易 277

innovus获取mem pin shape box脚本

innovus mem 的pin shae只能通过attitude editor看属性获取其pin shape的box,但是想用脚本处理一定box时,没有别的办法能直接获取box属性。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1108

java开灯问题_算法入门之开灯问题

开灯问题属于C语言中一维数组中较为基础典型的一道练习问题:有n盏灯,编号为1~n。第一个人把所有灯都打开,第二个人按下所有编号为2的倍数的开关(这些灯将被关掉),第三个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),以此类推。一共有k个人,问最后有哪些灯开着?输入n和k,输出开着的灯的编号样例输入:7 3样例输出:1 5 6 7【分析】用a[1],a[2]…..a[n]...

weixin_39641231的博客 808

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

c语言开灯问题怎么编程,算法竞赛入门经典 例题 3-1 开灯问题,3-1开灯

算法竞赛入门经典 例题 3-1 开灯问题,3-1开灯有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯被打开, 开着灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。k≤n≤1000。样例输入:7 3样例输出:1 5 6 7#include #...

weixin_34486033的博客 710

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

算法入门开灯问题

#include #include using namespace std; //开灯问题,数组问题 //输入灯的总数,人数 #define maxn 101 int main() { int n,k,first=1; cin>>n>>k; int a[maxn]; memset(a,0,sizeof(a));//这个是C语言中的,作用是把数组进行清零处理 for(int i=0;

yhongyu的博客 723

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

算法入门-开灯问题

开灯问题 有n盏灯,编号为1~n。第1个人把所有灯打开,第2个人按下所有编号为2第倍数的开关,第3个人按下所有编号为3的倍数的开关(其中关掉的灯被打开,打开的灯被关掉),以此类推,一共有k个人,问最后有哪些灯开着。(k <= n <= 1000) // // Created by yoyoOvQ on 2021/1/25. // #include <stdio.h> #include <string.h> #define maxn 1005 int a[maxn]

yoOvQ的博客 623

算法竞赛入门经典开灯问题

#include<stdio.h> #include<string.h> #define maxn 1010 int a[maxn]; int main() { int n,k,first=1; memset(a,0,sizeof(a));//使数组中的值为0 scanf("%d%d",&n,&k); for(int i=1;i<=k;i++)...

weixin_44488944的博客 274

简短易懂算法入门经典:开灯问题

算法入门经典:开灯问题 问题: 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯被打开, 开着灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着? 输入:n和k,输出开着的灯编号。k≤n≤1000。 样例输入: 7 3 样例输出: 1 5 6 7 `#include<stdio.h> #include<string.h>int b[1001]; int main() {

m0_47874819的博客 1006

算法入门:开灯问题

有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯被打开,       开着灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?    输入:n和k,输出开着的灯编号。k≤n≤1000。   样例输入:7  3   样例输出:1 5 6 7 这题是在算法入门书上看的,自己写的时候,没有想太多...

小白虫 653

开灯问题 分类: 算法入门 算法 ...

开灯问题 时间限制:3000ms | 内存限制:65535KB 难度:1 描述 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2的倍数的开关(这些灯将被关掉),第3个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推。一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号。...

dengxundong1074的博客 190

算法竞赛入门开灯问题

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

算法竞赛入门,越专注,越成功。 211
上一篇: 多重背包问题 I
下一篇: LeetCode 5.最长回文字串
「已注销」
博客等级 码龄6年 43粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值