java算法之灯的开关问题

本文探讨了一个经典的灯的开关问题:初始100盏亮灯,每轮按特定规律操作开关。通过将问题转化为求每个灯泡的因子分解个数,可以确定最终哪些灯是亮着的。例如,第6盏灯因被按偶数次而保持亮着,而第25盏灯因被按奇数次而关闭。问题的关键在于如何高效地进行因式分解。
摘要由CSDN通过智能技术生成

灯的开关问题:

初始状态,有100盏灯,都是亮的。
第一轮,第1,2,3,4,5,6....100盏灯按一下开关。                     1的倍数
第二轮,第2,4,6,8,10......100盏灯按一下开关。         2的倍数
第三轮,第3,6,9,12,15......99盏灯按一下开关。            3的倍数
。。。。。
第100轮,第100盏灯按一下开关。                100的倍数
问,哪些灯是亮着的?


思路:

这个问题,其实之前我专门做过,最后也相通了,可是刚开始看的时候,就没有很快的有思路,当然也可能是思考时间太短了,这个题应该是个经典问题,当学长提出来之后,很快就有学生上去进行了讲解。这也说明了,我真的还很弱,还和大佬存在很大的差距,要继续加油。

回归正题:

这个问题可以转换成求因子分解的个数,就是判断每一盏灯,会被按几次。这样按偶数次数的灯,开关状态不变,按奇数次数的灯,开关变成原来的相反的状态。

举个例子:

第6盏灯: 6=1×6,6=2×3,这样就说明,第6盏灯在第一轮,第二轮,第三轮,第六轮,都会被按一次,除了这几次之外,第六盏灯不会在改变它的开关状态,所以我们可以看到,第6盏灯一共被按里偶数次&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值