求助C语言中的开灯问题!有n盏灯 编号1~n 第一个人把所有灯点亮 ,第2个人按下所有编号为2的倍

求助C语言中的开灯问题!有n盏灯编号1~n第一个人把所有灯点亮,第2个人按下所有编号为2的倍数的灯开关,第3人按编号为3的灯(其中关的灯被打开开的灯被熄灭),求最后哪些灯... 求助C语言中的开灯问题!有n盏灯 编号1~n 第一个人把所有灯点亮 ,第2个人按下所有编号为2的倍数的灯开关,第3人按编号为3的灯(其中关的灯被打开 开的灯被熄灭),求最后哪些灯开着? 。。。这是书上的答案,请问![a]就是等于1吗?还有if(first) first=0那里没看懂,帮我理一下思路吧,万分感谢! 展开
 我来答
树静风不止007
推荐于2017-12-15 · TA获得超过177个赞
知道答主
回答量:39
采纳率:0%
帮助的人:18.2万
展开全部
这个是白皮书上的题吧。。
把数组a清零之后,每次 j%i==0 a[j] = !a[j];取反的意思就是把0变非零,非零变零。
0和非零,来模拟灯的状态,0表示灯在关着,取非!之后表示灯在开着。
if(first)first = 0;就是为了满足题意的输出要求,书上写的很清楚,如果是想要单纯学算法,不需要在意那些细节,掌握重要思路及代码就行了;如果要比赛,这个就比较重要,需要谨慎。
if(first)就相当于if(first!=0)的意思。
还有什么不懂的吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式